アドベントカレンダーが同日2つ入れてしまって焦っている大橋です。
少し前にGoogle Formでファイルアップロードがサポートされましたね!
かなり欲しい欲しいと言われていた機能ですし、この機能が無いがためにGoogle Apps ScriptでUIを作るってのもよくありました。
この機能についてチャント把握していなかったので、触りながら理解をしていきたいと思います。
前提
Google FormのファイルアップロードはG Suite(旧Google Apps for work)でないと使えません。
またファイルアップロードアイテムを追加した場合、必ず同一ドメイン内のユーザしか回答が行なえません。
外部向けのGoogle Formでは現状この機能が使えない点ということに注意してください。
追加の仕方
Google Formの質問追加先メニュー内に「ファイルのアップロード先」というメニューが出てきますのでそれを選択してください。
設定できること
タイトル・説明文
通常の質問と同様にタイトルと説明文が設定できます。
説明文を追加する場合は右下のメニューから「説明」にチェックを入れてください。
ファイルの最大数・最大ファイルサイズ
ファイルの最大数はアップロード可能なファイルの数です。
最大ファイルサイズは1つファイルあたりの最大ファイルサイズです。
ファイルの最大数を1より大きく設定した場合、ファイルをアップロードしても最大数になるまでフォーム側に「ファイルを追加」リンクが表示されます。
また最大ファイルサイズを超えるファイルをアップロードしようとした場合は以下のようにエラーが表示されます。
許可するファイル形式
許可するファイル形式はアップロードを許可するファイル形式を選択できます。
例えば画像のみにするとアップロード時に画像以外のファイルを選択できなくなります。
画像
キャプチャを取れなかったのですがタイトルの右側をマウスオーバーすると他の質問同様に画像が添付できます。
画像を添付すると質問内にも画像が表示されるようになります。
アップロード後の挙動
ファイルの保存先
アップロードされたファイルはGoogle Driveに保存されます。
Google Formの編集画面で回答タブを選択すると、アップロードされたファイルが確認できます。
「フォルダを表示」リンクをクリックすればファイルが保存されたGoogle Driveフォルダを表示できます。
今回確認した限りではファイルは「MyDrive/{フォーム名}(File responses)/{質問タイトル}(File Responses)」にアップロードされるようです。
アップロードされたファイル名を若干変更され「{元のファイル名} - {アップロードした人の名前}.{元のファイルの拡張子}」になるようです。
GASの挙動
onFormSubmit
トリガーを利用して、GAS側でアップロードしたItemReponseオブジェクトの結果を取得した場合、結果はGoogle DriveのファイルID配列として取得されます。
結果については仮にアップロードされるファイルが1つでも、必ず配列になるようです。
まとめ・使い道
使い道はかなり多くあるように思います。
例えば社員全員の顔写真を集めて、AdminAPI経由でアカウントの顔に設定したり、
CSVをアップロードしてもらって、定期レポートを作成したりと、
GASのUIとしての役割をもたせることも可能になると思います。
願わくば外部からのアップロードも許可されるとなお良いのですが、セキュリティ的な部分で難しいのかもしれません。
GASのアドベントカレンダーなのにGASの話が殆どなかったですねスミマセヌ。