Google Workspace周りで自動化のニーズがありそうな「Googleフォームで作ったアンケートが入力されたら自動的に管理者にメールを送る」の実装例を紹介します。
実装手順
1. フォームの作成
普通にフォームを作成します。
設問なども通常のフォームと同じように作成する。
2. スクリプトエディタを開く
Googleフォームの編集画面の右上のメニューから「スクリプトエディタ」を開きます。Google App Script のエディターが表示されます。
3. コードを書く
フォーム送信時(Googleフォームで最後の「送信」を押したとき)に実行するスクリプトを書きます。初期状態で選択されている「コード.gs」に以下のコードを貼り付ければ、だいたいOKです。
function onSubmit(e) {
const mailAddress = "foobar@example.com";
const itemResponses = e.response.getItemResponses();
let mailBody = "";
for (const itemResponse of itemResponses) {
const item = itemResponse.getItem();
const index = item.getIndex();
const type = item.getType();
const title = item.getTitle();
const response = itemResponse.getResponse();
mailBody += `----\n[${index}] ${title}\n----\n`;
switch(type) {
case FormApp.ItemType.CHECKBOX:
if (response) {
mailBody += response.join(", ");
mailBody += "\n";
}
break;
case FormApp.ItemType.GRID:
if (response) {
mailBody += response.join("\n");
mailBody += "\n";
}
break;
case FormApp.ItemType.CHECKBOX_GRID:
if (response) {
mailBody += response.map((elem) => {
return elem ? elem.join(',') : "";
}).join("\n");
}
break;
default:
mailBody += `${response}\n`;
break;
}
mailBody += "\n";
}
GmailApp.sendEmail(mailAddress, "フォームの受け付け", mailBody);
}
mailAddress の箇所は、送信先のメールアドレスに適宜変更してください。
4. トリガーを設定する
フォーム送信時にスクリプトが実行されるようにトリガーを設定します。左のアイコンからトリガー設定を開き、「トリガーを作成」で新たなトリガーを設定します。
イベントのソースは「フォームから」、イベントの種類は「フォームの送信時」とします。そのほかは初期値でOKです。
登録する際、スクリプトの実行権限に関する確認が表示されるので、確認の上、「承認」や「Allow」を押して実行を許可してください。アカウントを選択した後に警告が表示される場合は「Advanced」をクリックし、「Go to ****のプロジェクト (unsafe)」をクリックすれば権限の画面に進めます(自己責任でお願いします)。
5. テストする
実際にフォームに入力・送信してみて、メールが届くことを確認してください。
気づいたこと
- 上の例だと、メールの送信元がトリガーを設定した人になる。何らかの事情で送信元(の表示)を変えたい場合などは、Gmail API を使うとかでメールの送り方を考える必要がありそうです。
- 上のコードでは、グリッド式の設問について行の見出しを取れていないので、改善の余地アリです。