質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

375閲覧

グーグルフォームの自動返信について

ayane-holly

総合スコア9

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2019/05/24 04:40

下記のようにフォーム返信スクリプトを組んだのですが、「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を参考にしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。ありがとうございました

投稿2019/05/24 05:04

ayane-holly

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問