下記のようにフォーム返信スクリプトを組んだのですが、「null のメソッド「getLastRow」を呼び出せません。」ばかり出てきて、自動返信がうまくいきません。どこが間違っているのかを教えてください
/* 自動返信 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 = "お問い合わせありがとうございます。\n\n" +"下記のとおりお問い合わせを受け付けました。\n\n" + "------------------------------------------------------------\n"; var footer = "------------------------------------------------------------\n\n" + "後ほど担当者よりご連絡させていただきます。"; // 入力カラム名の指定 var NAME_COL_NAME = '名前'; var PHONE_COL_NAME = '電話番号 (携帯電話: 緊急時のみ使用します)'; var EMAIL_COL_NAME = 'メールアドレス'; // 送信側情報 var admin = "xxxx@xxx.xxx"; // 管理者 (必須) var sendername = "xxxxxxxxxxxxxx"; // name: var cc = ""; // CC: var bcc = admin; // 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('1jpR9QAFmGMyf0rhnW20keXEF-NHpXW5pSR3mtK0Z9N8'); // 指定した 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; // 本文作成と送信先メールアドレス取得 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); } }
ちなみにhttps://gist.github.com/TakashiUNUMA/adc17fb5518ea55a4238を参考にしました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。