Googleフォームで画像を送ることって結構あると思います。
それで、Googleフォームが送られた際にSlackに飛ばすのですが、そのままの設定だと画像のファイルIDしか表示されなかったので、なんとか出来ないかと試しました。
Googleフォーム→Slack
こちらの記事を参考に作成。ただ、トリガーの部分だけが今と若干違うので注意が必要。
この画面に飛んだら、トリガーを追加を押す。
実行したいタイミングを設定して保存すれば、トリガーの設定はOK
余談ですが、Googleフォームからスクリプトエディタに飛ぶ際に、複数アカウントでログインしていると結構な割合で編集することが出来ないのですが、GoogleChromeのシークレットモードにして作業すれば何も問題無いので、オススメです。
Googleドライブの権限設定
アップロードした画像はGoogleドライブにアップロードされます。
フォルダは任意の場所に移動することは可能ですが、デフォルトではルートディレクトリに作成されます。
【フォームのディレクトリ】→【質問のディレクトリ】という構造になっています。
ディレクトリを選択し右クリックして、共有リンクの発行をしておきます。これによって、後から追加された画像についても共有リンクの許可がおりるようになります。
スクリプトエディタの設定
case "キャラクターデザインイラスト":
img = response;
break;
imgが受け取ったファイルIDになります。
共有されたリンクが発行された画像は、下記のURLで見ることが可能になります。
http://drive.google.com/uc?export=view&is=[ファイルID]
なので、Slackに飛ばす際にURL+ファイルIDにすればSlack側で表示されるようになります。
"\nキャラクターデザインイラスト:http://drive.google.com/uc?export=view&id=" + img
これでSlackでGoogleフォームから送られてきた画像を確認することが出来るようになりました。
ただ、これだと画像が複数枚来た時の対応が出来ません。
複数枚来た時の対応方法
var img_array = img.split(',');
var count = img_array.length;
var img_url = "";
for(var i=0;i<count;i++)
{
img_url+="http://drive.google.com/uc?export=view&id=" + img_array[i] + "\n";
}
画像が複数枚設定された時は[画像ID,画像ID]と、カンマ区切りで値がやってきます。なので、一度split関数を使い、配列にします。
その後に全て読み込み、URLと改行コードを入れてStringに追加していき、img_urlをSlackに飛ばしてあげれば確認することが出来ます。
以上です。GoogleフォームとSlackで便利な生活を!