見出し画像

[GAS]フォーム未回答者へ督促メール送信

Googleフォームで回答を収集すると大幅に手間が省けることがあります。
例えば、「健康診断の受診希望日」。

画像2

フォーム上でメールアドレスを収集すると、氏名を書く手間が省け回答のレスポンスがさらに早まりオススメです。
(※企業向けののGoogle Workspaceでしかできない機能かも?個人用のG Suiteではメールアドレスの入力を求められるようです)
設定は以下を参照。

「設定」を押下。

画像7

「メールアドレスを収集する」をチェック

画像2

Googleフォームでは、回答用のスプレッドシートを作成するとそこに回答が収集されます。

「回答」押下 → 「スプレッドシートの作成」押下

画像8

「新しいスプレッドシートを作成」選択 → 「作成」押下

画像9

画像3

これだけでも十分便利なのですが、未回答者へ督促メールを出す仕組みをGASで実装します。

予めシート[allMember][mail]を用意します。

[allMember] = フォームを送信した全員のメールアドレスを用意
[mail] = 督促メールの件名、本文を用意

画像5

画像5

スクリプトはこちら。
(最後2行、sendEmail/createDraftはコメントアウトしています。適宜変更ください)

function formAnswer() {
 
 const ss          = SpreadsheetApp.getActiveSpreadsheet();
 const memberSheet = ss.getSheetByName("allMember");
 const answerSheet = ss.getSheetByName("フォームの回答1"); 

//シート[allMember]から全員のメアド、[フォームの回答1]から回答済みメンバーのメアドを取得
 const array01 = memberSheet.getRange(2, 2, memberSheet.getLastRow()-1).getValues().flat();
 const array02 = answerSheet.getRange(2, 2, answerSheet.getLastRow()-1).getValues().flat();
 const array03 = [];  

//pushメソッドを用い差分をarray03に代入
 for (const num of array01) {
   if (!array02.includes(num)) {
     array03.push(num);
   }
 }
 
 const mailSheet = ss.getSheetByName("mail"); 

 const recipient = array03;
 const subject   = mailSheet.getRange(1, 2).getValue();
 const body      = mailSheet.getRange(2, 2).getValue();

//  GmailApp.sendEmail(recipient, subject, body); //メール送る      
//  GmailApp.createDraft(recipient, subject, body); //メール下書き     
 
}

実行すると下記のようなメールが生成されます。

画像6

このスクリプトにトリガーを設定(締め切りの前日、前々日など)して運用しています。

※このスクリプトは私が所属しているコミュニティのメンバーに教えていただき書くことができました。ありがとうございました。

※続きの記事を書きました









この記事が気に入ったらサポートをしてみませんか?