はじめに
Googleフォームで依頼を受け、対応後、スプレッドシートに記入したらメールを送信したい場合のコードです。
処理の流れとしては以下
この記事は、4の内容のコードです
- Googleフォームで依頼を受ける
- オフラインで対応
- 2の対応後、対応した内容スプレッドシートに記入する
- 3の対応済み、かつメール送信していないものを1の問い合わせ者に通知する
紫色項目が、Googleフォームからの問い合わせ
青色項目が、手動記入&GASで使うステータス
タイムスタンプ | test | test1 | メールアドレス | Ans | 送信ステータス |
---|---|---|---|---|---|
2020/06/04 21:33:02 | a | 1 | xxx@gmail.com | Ans記入 |
コード
function myFunction() {
// スプレッドシート取得
let sheet = SpreadsheetApp.getActive().getSheetByName('フォームの回答 1');
// データ取得範囲指定
const row = 2;
const column = 1;
const LastRow = sheet.getDataRange().getLastRow();
const LastColumn = sheet.getDataRange().getLastColumn();
const numRows = LastRow - row + 1;
const numColumns = LastColumn - column + 1;
// データ取得
let data = sheet.getRange(row, column, numRows, numColumns).getValues();
// メール
let recipient = ''; // 送信先メールアドレス
let subject = '対応完了 - '; // メール件名
let body = '';
let sendCnt = 0;
for (let i=0; i < data.length; i++) {
// 1行ずつメール未送信かどうかチェック
if ( data[i][5] != '済' ) { // 送信ステータスチェック
recipient = data[i][3];
subject += data[i][1];
body += '\ntest:' + data[i][1];
body += '\ntest1:' + data[i][2];
body += '\nAns:' + data[i][4];
GmailApp.sendEmail(recipient, subject, body); //, options
sheet.getRange(i+2, 6).setValue('済');
sendCnt ++;
}
}
if ( sendCnt == 0 ) {
console.log('送信対象無し');
}
}