
【旧版1】GAS Googleフォームで申込があったら抽選番号や申込番号を付与してメールで知らせるツール
2021/12/21追記 抽選番号ツールを元に改良したQR受付システムの記事を書きました
https://note.com/0375/n/n57d84bb08936
2021/11/23追記 こちらに改良版の記事を書きました
2021/08/13追記 こちらに補足修正記事かきました
オンラインのちょっとしたイベントで参加者に抽選番号をお知らせする、というようなことが必要になったので、作ってみた。抽選番号でなくて、申込番号というようなケースでも使えるGASだと思う。雑いGASですが、何かのヒント、助けになれば幸い。備忘録としてnote書いておく。
流れ・フロー・作成イメージ
フォームに回答する
↓
フォームに紐づけられたスクリプトがフォーム送信時に起動して、回答スプレッドシートで抽選番号を自動的につける
↓
スプレッドシートに紐づいたスクリプトがフォーム回答者にメール送信して抽選番号をお知らせする
作り方
1.フォームを用意します。
こんな感じ。回答シートも用意しておきましょう。

2.フォームに紐づく形でスクリプトを書きます。
function setSerialNumber() {
const spreadsheet = SpreadsheetApp.openById('YOUR ID');
const sheet = spreadsheet.getSheetByName('YOUR SHEET NAME');
var range = sheet.getRange(sheet.getLastRow(), 6);
if (range.isBlank() == true) {
range.setValue("=ROW()-1");
}
SpreadsheetApp.flush();
}
var range = sheet.getRange(sheet.getLastRow(), 6); の数字は、フォーム回答のスプレッドシートのどこに抽選番号を入れたいかで適当に変えてください。
すぐさまシートに反映したかったので、心配なので SpreadsheetApp.flush(); を最後に入れてみた。
setValue("=ROW()-1")で行番号-1の数式が抽選番号が入ってほしい列に入る、という形です。行の順番入れ替えると数字変わっちゃうので動かさないの前提で。決め打ちで数字を付与するのになんかいい方法あるのかもしんないけど、すぐに思いつかなかったので、とりあえず動くこの方式でやってみた。
フォーム回答時にこのスクリプトが動いてほしいので、トリガー設定を忘れずに。

3.スプレッドシートに紐づく形で、自動返信メールのスクリプトを書きます。
function autoReply() {
const sheet = SpreadsheetApp.getActiveSheet();
const row = sheet.getLastRow();
const mail = sheet.getRange(row, 2).getValue();
const name = sheet.getRange(row, 3).getValue();
const lotteryNumber = sheet.getRange(row, 6).getValue();
const ownName = '抽選係' // こちらの名前
const refUrl = 'https://www.XXXX' // URL
const title = "【抽選番号のお知らせ】ドキドキ抽選申込フォーム"
//メール本文を作成
const body = `
${name} 様
ドキドキ抽選申込フォームにお申込みいただきありがとうございます!
あなたの抽選番号は
${lotteryNumber}
です。
ドキドキ抽選ついては、こちらのURLをご覧ください: ${refUrl}
${ownName} より `
GmailApp.sendEmail(mail, title, body, {
// attachments: [file.getAs(MimeType.PDF)],
// bcc: 'bcc@XXX.XXX',
// cc: 'cc@XXX.XXX',
// from: 'from@XXX.XXX',
name: ownName
});//メール送信
}
こんなようなシートがあるとして、今回は6列目に抽選番号がはいっていく感じになります。

で、これもフォーム回答があったときに自動で動いてほしいので、トリガー設定する。

テストしてみると、こんなようなメールが届く。

抽選するときに使うツール
WEB上でランダムに抽選できるツールがある。
商店街のくじ引きで使うような、抽選機を使って、それをZoom配信しながらってのも面白いかも。
百均でもビンゴとか売ってるから、オンサイトの場合はそういうのでもいいのかも。
参考
連番を振る方法についてはこちら
自動メール返信はこちら。あといくつか参考にしたほかのページもあったんだけど失念してしまった...
なんかもっといい方法あったら、ぜひぜひコメントください!
いいなと思ったら応援しよう!
