【Unity】【C#】アプリからGoogleフォームでエラー報告を受けられるようにする


きっかけはStarOne:Originsのアプリを遊んでいて、設定の「エラー報告」を押したらGoogleフォームに飛んでそこから不具合報告できる仕様を見て、感動したことでした。

<img width="541" alt="スクリーンショット 2018-06-01 14.16.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/237014/6d736d49-0267-4592-da25-424c2cad6b4a.png">

[iOS](https://itunes.apple.com/jp/app/starone-origins/id1263447571?mt=8)
[Android](https://play.google.com/store/apps/details?id=com.Marumittu.StarONE&hl=ja)

アプリに不具合があると、レビュー欄でエラー報告と低評価がセットで載ることがしばしばあるため、エラー報告の導線を用意するとバグ起因の低評価を減らせる効果が期待できます。

基本的な手順は非常に簡単です。
①Googleフォームでアンケート形式で作成する
②アプリからURLを開く
```Application.OpenURL("https://...");```

StarOne:Originsのアプリで感動したのは、アプリからGoogleフォームを開くと、自動でOSや機種が入力されていることでした。
デバッグする側から見ればほしい情報ですが、報告時に入力させようとするとそれが面倒で報告されなくなる懸念がありますよね。
でも、初期入力は一体どうやってるんでしょう・・・・？

フォロワーさんから教えてもらった情報によれば、URLのパラメータ指定でできるそうです。これならアプリ側でちょいちょいするだけで済みますね。

なので、自動入力に対応した手順は、

①Googleフォームでアンケート形式で作成する
②初期入力用URLを取得する
※参考:http://blog.nakachon.com/2016/12/22/how-to-add-url-parameter-for-google-form/
③OSや機種情報を取得してURLを作成する
④アプリからURLを開く

となります。

#コード

```C#:Settings.cs
//Buttonに登録する
public void OnClick_ErrorReport()
    {
        //初期入力無しURL ※任意のURLに変更して使って下さい
        var URL = "https://docs.google.com/forms/d/e/1FAIpQLSdjLLjO0OEYT44hJlxUBFRm2wz2GTqpatku7sJb-aBv8eOcxg/viewform?usp=sf_link";

        #if UNITY_ANDROID || UNITY_IOS
        //===========================================================
        //OSバージョン
        //===========================================================
        string versionString = SystemInfo.operatingSystem.Replace("iOS ", "");

        //===========================================================
        //機種モデル
        //===========================================================
        string modelString = SystemInfo.deviceModel;

        //===========================================================
        //アプリバージョン
        //===========================================================
        string applicationVersionString = Application.version;

        //===========================================================
        //言語
        //===========================================================
        string systemLanguage = Application.systemLanguage.ToString();

        //初期入力ありURL ※任意のURLに変更して使って下さい
        URL = string.Format("https://docs.google.com/forms/d/e/1FAIpQLSdjLLjO0OEYT44hJlxUBFRm2wz2GTqpatku7sJb-aBv8eOcxg/viewform?usp=pp_url&entry.1543890908={0}&entry.966225331={1}&entry.451690904={2}&entry.465137427={3}",
                            versionString, modelString, applicationVersionString, systemLanguage);
        #endif
        Application.OpenURL(URL);
    }
```

こんな感じでできます。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">いえーい!<br>アプリからエラー報告できるようになったでぇ<br>自動でOSなども入力される😉 <a href="https://t.co/7lpQoJ1QfZ">pic.twitter.com/7lpQoJ1QfZ</a></p>&mdash; アズマゴロ―@ReRotation/カードゲームRPG (@azumagoro) <a href="https://twitter.com/azumagoro/status/1001026082911371264?ref_src=twsrc%5Etfw">2018年5月28日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


参考
http://hiyotama.hatenablog.com/entry/2016/12/16/153620
http://blog.nakachon.com/2016/12/22/how-to-add-url-parameter-for-google-form/

#開発中のゲーム
[![ビデオが開けなかった場合に表示されるテキスト](http://img.youtube.com/vi/hSu2tWgFons/hqdefault.jpg)](https://www.youtube.com/watch?v=hSu2tWgFons&feature=youtu.be)