GASでGoogleフォームを自動化できる実用例3選

最近、会社でGoogleフォームを使うことが多くて、もっと便利に出来たらいいなと思っているんですが…どうやって自動化したらいいかわからなくて…
猫男
猫男
catman
catman
それなら、GASを使ってGoogleフォームを自動化してみよう。やり方は意外と簡単で、色々できるんだ。

GoogleフォームとGASの組み合わせでできる3つの例

Googleフォームは非常に便利なツールだ。GASと組み合わせることで、フォームの送信結果を自動的に処理したり、通知を送ったり、データを整理したりすることができる。

1. フォーム送信後の自動処理

Googleフォームはデフォルトでスプレッドシートに送信結果を保存するが、GASを使えばその結果を他の作業に利用できる。


function onFormSubmit(e) {
  var responses = e.values;
  Logger.log(responses);
}

Googleフォームの送信トリガーで実行することで、送信されたデータが自動的にログに出力されるさ。

e.valuesは、フォームから送信されたデータを配列として取得するためのプロパティだ。このプロパティを活用することで、受け取ったデータに対して様々な自動処理が可能になる。

2. 通知機能の自動化

フォームが送信された際に、特定の担当者に通知メールを自動で送信することもできる。


function onFormSubmit(e) {
  var email = "example@example.com";
  MailApp.sendEmail(email, "新しいフォーム送信", "新しいエントリーがありました!");
}

MailApp.sendEmail()は、指定のメールアドレスにメッセージを送信するメソッドだ。これを使えば、例えば新規エントリーがあった際に即座に担当者に通知を送ることができる。

3. Googleフォームデータを整理する

GASを使って、Googleフォームのデータをさらに整理・整形する方法もたくさんある。

たとえば、特定の回答が含まれているデータを集めるといったこともできる。


function filterFormResponses() {
  const form = FormApp.openById("フォームIDをここに");
  const responses = form.getResponses();

  const filtered = responses.filter(response => {
    const items = response.getItemResponses();
    const targetAnswer = items[2]?.getResponse(); // 3番目の回答を取得
    return targetAnswer === "特定の条件";
  });

  filtered.forEach(res => {
    Logger.log("一致した回答日時: " + res.getTimestamp());
  });
}
  • form.getResponses():フォームに送信された全回答を取得します。
  • response.getItemResponses():1つの回答内に含まれる質問とその回答の配列を取得します。
  • items[2].getResponse():3番目の質問に対する回答内容を取得します(配列は0始まり)。
  • filter():条件に一致する回答だけを抽出しています。
  • Logger.log():一致した回答の日時をログに表示します。
わぁ、こんなに色々できるんですね!会社で早速試してみます!
猫男
猫男
catman
catman
いいぞ、その意気だ!GASを使って仕事をもっと効率的にしよう。

 

練習問題

次のコードを完成させて、Googleフォームが送信された際に、送信者のメールアドレスを取得してログに出力するスクリプトを作成しよう。


function onFormSubmit(e) {
  var email = e.......; // 送信者のメールアドレスを取得
  Logger.log(email);
}

 

 

解答・解説


function onFormSubmit(e) {
  var email = e.values[1]; // 通常、メールアドレスは2番目の列(インデックス1)に位置していることが多い。
  Logger.log(email);
}

e.valuesは、送信されたフォームデータを配列として取り扱っている。通常、フォーム内でメールアドレスフィールドが2番目に配置されている場合、e.values[1]を使ってそのメールアドレスを取得し、Logger.log()で出力することが可能だ。