Help us understand the problem. What is going on with this article?

Google FormのファイルアップロードとGAS

More than 3 years have passed since last update.

アドベントカレンダーが同日2つ入れてしまって焦っている大橋です。

少し前にGoogle Formでファイルアップロードがサポートされましたね!
かなり欲しい欲しいと言われていた機能ですし、この機能が無いがためにGoogle Apps ScriptでUIを作るってのもよくありました。
この機能についてチャント把握していなかったので、触りながら理解をしていきたいと思います。

前提

Google FormのファイルアップロードはG Suite(旧Google Apps for work)でないと使えません。
またファイルアップロードアイテムを追加した場合、必ず同一ドメイン内のユーザしか回答が行なえません。

外部向けのGoogle Formでは現状この機能が使えない点ということに注意してください。

追加の仕方

Google Formの質問追加先メニュー内に「ファイルのアップロード先」というメニューが出てきますのでそれを選択してください。

Kobito.Y0a4f1.png

設定できること

タイトル・説明文

通常の質問と同様にタイトルと説明文が設定できます。
説明文を追加する場合は右下のメニューから「説明」にチェックを入れてください。

Kobito.u1zJST.png

ファイルの最大数・最大ファイルサイズ

ファイルの最大数はアップロード可能なファイルの数です。
最大ファイルサイズは1つファイルあたりの最大ファイルサイズです。

Kobito.DLEaxS.png

ファイルの最大数を1より大きく設定した場合、ファイルをアップロードしても最大数になるまでフォーム側に「ファイルを追加」リンクが表示されます。

Kobito.sNdBlS.png

また最大ファイルサイズを超えるファイルをアップロードしようとした場合は以下のようにエラーが表示されます。

Kobito.o7p0v5.png

許可するファイル形式

許可するファイル形式はアップロードを許可するファイル形式を選択できます。
例えば画像のみにするとアップロード時に画像以外のファイルを選択できなくなります。

Kobito.NHoZDk.png

Kobito.8oLsaL.png

画像

キャプチャを取れなかったのですがタイトルの右側をマウスオーバーすると他の質問同様に画像が添付できます。

Kobito.jieGob.png

画像を添付すると質問内にも画像が表示されるようになります。

Kobito.Gqq8LK.png

アップロード後の挙動

ファイルの保存先

アップロードされたファイルはGoogle Driveに保存されます。
Google Formの編集画面で回答タブを選択すると、アップロードされたファイルが確認できます。

「フォルダを表示」リンクをクリックすればファイルが保存されたGoogle Driveフォルダを表示できます。

Kobito.Qg0aMp.png

今回確認した限りではファイルは「MyDrive/{フォーム名}(File responses)/{質問タイトル}(File Responses)」にアップロードされるようです。

アップロードされたファイル名を若干変更され「{元のファイル名} - {アップロードした人の名前}.{元のファイルの拡張子}」になるようです。
Kobito.6J7uEL.png

GASの挙動

onFormSubmitトリガーを利用して、GAS側でアップロードしたItemReponseオブジェクトの結果を取得した場合、結果はGoogle DriveのファイルID配列として取得されます。

結果については仮にアップロードされるファイルが1つでも、必ず配列になるようです。

Kobito.mrazNt.png

Kobito.pqRpj9.png

まとめ・使い道

使い道はかなり多くあるように思います。
例えば社員全員の顔写真を集めて、AdminAPI経由でアカウントの顔に設定したり、
CSVをアップロードしてもらって、定期レポートを作成したりと、
GASのUIとしての役割をもたせることも可能になると思います。

願わくば外部からのアップロードも許可されるとなお良いのですが、セキュリティ的な部分で難しいのかもしれません。

GASのアドベントカレンダーなのにGASの話が殆どなかったですねスミマセヌ。

soundTricker
Google API、GSuite、GCP、Angular(1&2)、Google Apps Scriptらへんの人 一応Google Developer Expert(Apps Script)です。 https://developers.google.com/community/experts/directory/profile/profile-keisuke_oohashi
https://plus.google.com/u/0/112329532641745322160/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away