-
-
Save ecoopnet/5318606 to your computer and use it in GitHub Desktop.
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 ドキュメントのフォームから投稿があったら確認メールを自動返信する(日本語版) | |
* English version will be available later. | |
* | |
* @author Masunaga Ray ( http://www.msng.info/ ) | |
* @instruction http://www.msng.info/archives/2012/04/google-docs-auto-reply.php | |
*/ | |
function sendConfirmation() { | |
try { | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
//フォームでメールアドレスが入力される列の名前 | |
var emailColName = "メールアドレス"; | |
//テンプレートとして使うシートの番号。1枚目を0と数える。false にするとテンプレートを使わない。 | |
var templateSheetId = false; | |
//テンプレートを使わない場合の確認メールの送信内容 | |
//件名(デフォルトではフォームのタイトルが入ります) | |
var subject = ss.getName(); | |
//冒頭に入れる文章 | |
var bodyPre = "下記の内容で受け付けました。\n\n"; | |
//末尾に入れる文章 | |
var bodyPost = ''; | |
//投稿内容の箇条書きにつける印 | |
var bullet = ' - '; | |
//確認メールのコピーを送る管理者のメールアドレス | |
var adminEmail = ss.getOwner().getEmail(); | |
//エラー発生時に管理者に送るメールの件名 | |
var errorSubject = 'エラーが発生しました'; | |
//スプレッドシートにつける送信済みマーク | |
var sentFlag = 'v'; | |
//送信済みマークをつける列のタイトルと背景色 | |
var sentHeaderTitle = '送信済み'; | |
var sentHeaderBgColor = '#ffffff'; | |
//メールアドレスの列が見つからなかった場合のエラーメッセージ | |
var emailNotFoundMessage = 'メールアドレス用のフィールド名「' + emailColName + '」が見つかりませんでした'; | |
var sheets = ss.getSheets(); | |
if (templateSheetId != false) { | |
//必要に応じてテンプレートの配置セルを変更してください | |
var template = sheets[templateSheetId].getRange(1, 1, 4, 1).getValues(); | |
subject = (template[0][0] == '') ? subject : template[0][0]; | |
bodyPre = template[1][0]; | |
bodyPost = template[2][0]; | |
errorSubject = template[3][0]; | |
} | |
var dataSheet = sheets[0]; | |
var range = dataSheet.getDataRange(); | |
var lastRow = range.getLastRow(); | |
var lastCol = range.getLastColumn(); | |
var header = dataSheet.getRange(1, 1, 1, lastCol).getValues(); | |
var emailCol = header[0].indexOf(emailColName) + 1; | |
if (emailCol == 0) { | |
throw emailNotFoundMessage; | |
} | |
var sentHeader = range.getCell(1, lastCol); | |
if (sentHeader.getValue() != sentHeaderTitle || sentHeader.getBackground() != sentHeaderBgColor) { | |
lastCol++; | |
range = dataSheet.getRange(1, 1, lastRow, lastCol); | |
range.getCell(1, lastCol).setValue(sentHeaderTitle).setBackground(sentHeaderBgColor).setHorizontalAlignment('center'); | |
} | |
for (var row = lastRow; row > 1; row--) { | |
if (range.getCell(row, 1).getValue()) { | |
var sentFlagCell = range.getCell(row, lastCol); | |
if (sentFlagCell.getValue() != sentFlag) { | |
var email = range.getCell(row, emailCol).getValue(); | |
var body = ''; | |
for (var col = 2; col < lastCol; col++) { | |
var title = range.getCell(1, col).getValue(); | |
if (title == '') { | |
break; | |
} | |
body += bullet + range.getCell(1, col).getValue() + ': ' + range.getCell(row, col).getValue() + "\n"; | |
} | |
body = bodyPre + body + bodyPost; | |
MailApp.sendEmail(email, subject, body, {bcc:adminEmail}); | |
sentFlagCell.setValue(sentFlag).setHorizontalAlignment('center'); | |
} else { | |
break; | |
} | |
} | |
} | |
} catch(e) { | |
MailApp.sendEmail(adminEmail, errorSubject, e); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment