GASでGoogleフォームを自動化できる実用例3選
最近、会社でGoogleフォームを使うことが多くて、もっと便利に出来たらいいなと思っているんですが…どうやって自動化したらいいかわからなくて…

猫男

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
いいぞ、その意気だ!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()で出力することが可能だ。