Info kplace.plala.jpから移設しました
■目的
Google Formの受付をGoogle Apps Script (GAS)を使って自動で停止します。
今回は実装済みメール返信と受付停止を同時実行します。
■受付自動停止
アドオンではなくGoogle Apps Scriptを用います。
|
内容 |
| アドオン |
拡張機能「formLimiter」を利用する
*現時点拡張機能として検索できませんでした。 |
| スクリプト |
[Google Apps Script]
スクリプトエディターを利用 |
■Google Apps Script
メール返信関数がすでに実装済なので受付停止関数を追加して双方展開の上位の関数にトリガーを設定します。
- スプレッドシートを開いて[拡張機能][Apps Script]でApps Script画面を開きます。
- [コード.gs]の既存メール返信に自動返信関数を追加したら、これらを展開する上位の関数を定義して[保存]します。
- 上位の関数に実行のトリガーを設定します。
// --- メール返信& 受付停止 ---
function onFormSubmit(e) {
// 1. メール返信
sendAutoReplyEmail(e);
// 2. 受付停止
checkAndCloseForm(e);
}
// --- メール返信 ---
function sendAutoReplyEmail(e) {
// 送信先のメールアドレスを取得する
var email = e.namedValues['E-MAIL'][0];
var USERNAME = e.namedValues['氏名'][0];
// メールの件名
var subject = '「競技会」お申込';
// メールの本文
var BODY = USERNAME + ' 様\n\n' +
'「競技会」にお申込み頂きありがとうございます。\n' +
'参加申込書を受信しましたので連絡いたします。\n' +
'なお事前説明会など詳細はホームページを参照ください。\n' +
'**このメールは自動返信されたものです。**\n' +
'**またこのメールへの返信はできません。**\n\n' +
'実行委員会\n' +
'担 当:xxxx\n' +
'Mail:xxx@xxx.xxx\n' +
'電 話:xxx-xxxx-xxx\n';
// メール送信する
MailApp.sendEmail({
to: email, //送信先
name:"実行委員会",
subject: subject, //件名
body: BODY
});
}
// --- 受付停止 ---
function checkAndCloseForm(e) {
var form = FormApp.openById('フォームID');
var sheet =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名');
var responses = sheet.getLastRow() - 1; // ヘッダー行を除いた回答数
var limit = 100; // 上限人数
if (responses >= limit) {
form.setAcceptingResponses(false);
}
}
■トリガー設定
Apps Script画面でトリガーを設定し、必要なアクセス権を許可します。
- Apps Script画面で[トリガー][+トリガーを追加]で設定画面を開きます。
- [イベントの種類を選択=フォーム送信時]以外はデフォルトにして[保存]します。
- [Choose an Account]画面が開くのでメール送信のGoogleアカウントを指定します。
- Google hasn't verified this appに対しては[Advanced][Go to
プロジェクト名(unsafe)]を選択します。
- Googleアカウントへのアクセスに対して[ALLOW]で応答します。
- トリガーが追加されたのを確認して終了です。
■結果
- Google Apps Scriptによる自動受付停止とメール返信を可能にしました。
- 受付停止の代表的なアドイン「formLimiter」はなぜか拡張機能に存在しません。
- フォームの受付数はformからも取得可能ですがスプレッドシートからです。
- フォームIDはformのURLから取得できます。
- 1日のメール件数合計は、無償だと1アカウント当たり100件の制限ありです。