10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Swift5】Googleフォームにあらかじめ自動入力する

Last updated at Posted at 2020-05-25

はじめに

アプリの不具合の報告などで、OS情報やアプリのバージョンなどの情報があるととても助かりますよね。
そこで今回は、それらの項目を自動入力してくれるフォームの作り方を紹介します。

方法

Googleフォームには、自動入力済みのURLを発行する機能があります。
このURLの一部をSwiftで書き換えればいいのです。

1. フォームを作成

こちらからフォームを作成してください。
作成方法については説明を割愛させていただきます。

2. URLを生成

フォーム作成画面の右上にある、・が縦に3つ並んだメニューボタンから、「事前入力したURLを取得」をクリックします。
するとフォーム入力画面に飛ぶので、事前入力しておきたい項目に分かりやすい文字列を入力しておきます。
スクリーンショット 2020-05-25 21.17.34.png
「リンクを取得」をクリックするとURLが生成されます。
画面左下の「リンクをコピー」を押してコピーしておきましょう。
スクリーンショット 2020-05-25 21.20.20.png
自分の場合はこのようなリンクになりました。

https://docs.google.com/forms/d/e/(省略)/viewform?usp=pp_url&entry.1009686721=osversion&entry.1835889012=appversion

3. OS情報、アプリのバージョンを取得

OS名はUIDevice.current.systemName、OSバージョンはUIDevice.current.systemVersionで取得可能です。(どちらもStringです)

let os = "\(UIDevice.current.systemName)%20\(UIDevice.current.systemVersion)"
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String

この文字列はURLの一部となるため、スペース(空白)は使ってはいけません。
代わりに%20を使用すると空白になります。

追記 機種の名前を取得する

正確な機種名(例えば「iPhone XS」など)を取得するため、YMTGetDeviceNameというライブラリを使用します。

var device = YMTGetDeviceName.share.getDeviceName()
if let devName = device.range(of: " ") {
  device.replaceSubrange(devName, with: "%20")
}

rangeを使って、空白を%20に置き換えています。

4. URLの書き換え

先ほどのURLのosversionの部分を\(os)に、appversionの部分を\(version)に書き換えるだけです。

let url = URL(string:"https://docs.google.com/forms/d/e/(省略)/viewform?usp=pp_url&entry.1009686721=\(os)&entry.1835889012=\(version!)")
UIApplication.shared.open(url! as URL)

動作確認

Simulator Screen Shot - iPhone 11 Pro - 2020-05-25 at 22.11.28.png 問題なく表示されています。 ユーザーの手間を省けるので、試す価値はあると思います!
10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?