見出し画像

【旧版2】GAS Googleフォームで申込があったら抽選番号や申込番号を付与してメールで知らせるツール 補足追加修正

2021/12/21追記 抽選番号ツールを元に改良したQR受付システムの記事を書きました

QR


2021/11/23 追記 こちらに改良版の記事を書きました

改訂版


前置き

先般かいたこのnoteで、抽選番号の付与と、自動返信のスクリプトを分けて書いていた。

旧版1

これだと、スクリプト起動のタイミングのズレで、抽選番号が付与されていない状態で自動送信されるケースがあるようだった。なので、それぞれのスクリプトを合体して、一つのスクリプトにして、上から順次処理していくよう改良した。なんで分けて書いてたんだっけ...疲れてたのかな...

改良コード

まあ一緒にしただけなんですけどね。フォーム回答時にスクリプトが動くようにトリガーセットしてます。

/* 抽選番号を付与して自動メール返信する。トリガーセット。 */
function setSerialNumber() {
 const spreadsheet = SpreadsheetApp.openById('YOUR SHEET ID');
 const sheet = spreadsheet.getSheetByName('YOUR SHEET NAME');

/* 回答シートに連番セット */
 var range = sheet.getRange(sheet.getLastRow(), 13);// 行列の指定は環境によって調整してね
 if (range.isBlank() == true) {
   range.setValue("=ROW()-1"); //=ROW()-1 行数マイナス1の数式をシートに反映して、それが抽選番号になる
 }
 SpreadsheetApp.flush(); // シートに即時に抽選番号反映させるためのコード
 
/* ここからメール送信スクリプト */
 const row = sheet.getLastRow();
 const mail = sheet.getRange(row, 2).getValue();
 const name = sheet.getRange(row, 5).getValue();
 const lotteryNumber = sheet.getRange(row, 13).getValue();
 const ownName = '抽選係'                // こちらの名前
 const refUrl = 'https://xxxx' // 紹介URL
 const title = "【抽選番号のお知らせ】"
 
 //メール本文を作成
 const body = `
 ${name} 様
 
 この度は 抽選エントリーフォーム にご回答いただきありがとうございます。
 
 あなたの抽選番号は
 
 ${lotteryNumber}
 です。

 抽選については、こちらのURLをご覧ください: ${refUrl}

 ${ownName} より `
 
 GmailApp.sendEmail(mail, title, body, {
   //  attachments: [file.getAs(MimeType.PDF)],
   //  bcc: 'メールアドレス', 
   //  cc: 'メールアドレス', 
   from: 'メールアドレス',
   name: ownName
 });//メール送信
}

★上記コードだと、同時刻に二つ以上の回答があったときに、一つにしか番号が付与されない、ということがあった。改良しないとな...。

以上でーす。


いいなと思ったら応援しよう!

good-sun(a03)
いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!