Last active
September 10, 2018 15:06
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
自動返信 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