Skip to content

Instantly share code, notes, and snippets.

@TakashiUNUMA
Last active September 10, 2018 15:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TakashiUNUMA/adc17fb5518ea55a4238 to your computer and use it in GitHub Desktop.
Save TakashiUNUMA/adc17fb5518ea55a4238 to your computer and use it in GitHub Desktop.
Google フォームを用いた自動返信スクリプト (参考 URL: http://creazy.net/2011/03/google_form_mailsend.html) Version 0.1.2
/*
自動返信 Google Apps Script
オリジナルスクリプト:http://swimath2.hatenablog.com/entry/2014/10/11/224320
this script was modified by Takashi Unuma
inspired by Ryohei Kato
last modified: 3rd Mar. 2017
*/
function sendMailFromForm() {
Logger.log('sendMailFromForm() debug start');
//------------------------------------------------------------
// 設定エリアここから --- >
//------------------------------------------------------------
// 件名
var subject = "セミナーへの参加登録が完了しました";
// 宛先・本文
var ibody = ""; // 送信先の氏名を後で挿入
var body = ""; // 本文を後で挿入
// 入力カラム名の指定
var NAME_COL_NAME = '姓 名';
var PHONE_COL_NAME = '電話番号 (携帯電話: 緊急時のみ使用します)';
var EMAIL_COL_NAME = 'メールアドレス';
// 送信側情報
var admin = ""; // 管理者 (必須)
var from = ""; // from:
var name = ""; // name:
var cc = ""; // CC:
var bcc = ""; // BCC:
var reply = admin; // Reply-To:
var to = ""; // To: (入力者のアドレスが自動で入ります)
//------------------------------------------------------------
// <--- 設定エリアここまで
//------------------------------------------------------------
//------------------------------------------------------------
// メール送信のためのプログラム ここから --->
//------------------------------------------------------------
try{
//
// Open a form by ID and get edit url to each response.
// The original code was found at as following URL;
// https://productforums.google.com/forum/#!topic/apps-ja/YB-UoPMt-eM
//
// and the way of getting the form ID is as follows;
// https://productforums.google.com/forum/#!topic/docs/eoPN9F6KTs4
//
// Google form の ID を指定
var form = FormApp.openById('');
// 指定した Google form の内容を全て取得
var formResponses = form.getResponses();
// 取得した form 内容のうち,編集用の URL だけを取得 (.getRditResponseUrl() という関数を使用)
for (var i = 0; i < formResponses.length; i++) {
var editURL = formResponses[i].getEditResponseUrl();
}
// debug (編集用 URL が取得できているかチェック)
Logger.log("Edit URL = " + "," + editURL);
// スプレッドシートの操作 (ここからは,上記と異なり集計したスプレッドシートを編集する)
var sh = SpreadsheetApp.getActiveSheet();
var rows = sh.getLastRow();
var cols = sh.getLastColumn();
var rg = sh.getDataRange();
// debug (行・列のデータが取得できているかチェック)
Logger.log("rows = " + rows + " cols = " + cols);
// 先に所属・姓名を取得して body へ格納
for (var j = 1; j <= cols; j++ ) {
var col_name = rg.getCell(1, j).getValue(); // カラム名
var col_value = rg.getCell(rows, j).getValue(); // 入力値
// 姓名の後に 様 を付けて ibody に格納
if ( col_name === NAME_COL_NAME) {
ibody += col_value + " 様\n\n";
}
}
// 宛名を body に追記
body += ibody;
// 本文を body に追記
body += "事務局です.\n\n"
+ "セミナーへの登録が完了致しました.\n"
+ "登録内容は以下の通りです.\n\n\n"
+ "--- ここから ---\n";
// 本文作成と送信先メールアドレス取得
for (var j = 1; j <= cols; j++ ) {
var col_name = rg.getCell(1, j).getValue(); // カラム名
var col_value = rg.getCell(rows, j).getValue(); // 入力値
// 電話番号・メールアドレス・Score・空白列は除外 (flag = 1) し,その他は表示 (flag = 0)
if ( col_name === PHONE_COL_NAME) {
var flag = 1;
}
else if ( col_name === EMAIL_COL_NAME) {
var flag = 1;
}
else if ( col_name === "Score") {
var flag = 1;
}
else if ( col_name === "") {
var flag = 1;
}
else {
var flag = 0;
}
if ( flag === 0 ) {
body += "【" + col_name + "】\n";
body += " " + col_value + "\n\n";
}
// 送信先を指定
if ( col_name === EMAIL_COL_NAME ) {
to = col_value;
}
}
body += " 編集用 URL (以下の URL を使用することで,登録内容を編集出来ます.): \n"
+ editURL
+ "\n\n"
   + "--- ここまで ---\n"
+ "(携帯電話番号とメールアドレスは,個人情報となるため表示していません)\n\n";
// フッター
var footer = "";
body += footer;
// 送信先オプション
var options = {};
if ( cc ) options.cc = cc;
if ( bcc ) options.bcc = bcc;
if ( reply ) options.replyTo = reply;
if ( name ) options.name = name;
if ( from ) options.from = from;
// メール送信
if ( to ) {
MailApp.sendEmail(to, subject, body, options);
}else{
MailApp.sendEmail(admin, "[sendMailFromForm] Google フォームにメールアドレスが指定されていません", body);
}
}catch(e){
MailApp.sendEmail(admin, "[sendMailFromForm] スクリプト内部エラー", e.message);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment