前提・実現したいこと
Google GASで、
1.ユーザがGoogleフォームに入力
2.フォーム送信時をトリガーにGoogleフォーム回答内容+ステータスをスプレッドシートに記載
3.フォーム送信時をトリガーに自動的に申請内容を承認者へGmailメールで配信
4.承認者がメール本文の承認・否認のリンクをクリックするとリンク先のGASウェブアプリケーションが起動
5.承認(APPROVED)・否認(REJECTED)のメッセージ内容がウェブで表示(※ここで問題が発生しています。)
6.承認者が承認・否認をクリックすると承認者・申請者にメールが自動配信
7.承認者が承認・否認をクリックするとスプレッドシート上のステータスの記載を2から更新
(メール本文等は英語で作成しております。)
発生している問題・エラーメッセージ
TypeError: null のメソッド「getRange」を呼び出せません。(行 5、ファイル「コード」、プロジェクト「doGet」)
該当のソースコード
function doGet(e) {
var row = e.parameter.row;
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange(row, 1, 1, 15).getValues()[0];
var bodies = generateBodies(values);
var answer = e.parameter.answer;
var result = {
ok: 'APPROVED',
ng: 'REJECTED'
};
if(answer){
sheet.getRange(row, 15).setValue(result[answer]);
var recipient = values[1];
var subject = 'Your Request ' + result[answer] + '!';
var body = '';
body += 'The following Request was ' + result[answer] + ' by your supervisor.\n\n';
body += bodies.plain;
var html = '';
html += '<h1>Request was ' + result[answer] + '!</h1>';
html += '<p>The following Request was ' + result[answer] + ' by your supervisor.</p>';
html += bodies.html;
GmailApp.sendEmail(recipient, subject, body, { htmlBody: html });
var html = '';
html += '<h1>The Request was ' + result[answer] + '!</h1>';
html += '<p>You have ' + result[answer] + ' the following Request.</p>';
html += bodies.html;
return HtmlService.createHtmlOutput(html);
}
}
GAS
試したこと
こちらの他の質問を参照し、
フォーム送信時の実行では、ActiveなSheetが無いため、
var sheet = SpreadsheetApp.getActiveSheet();
ここを、
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名");
でシート名を記載して実施しましたが、下記の通りエラーとなりました。
TypeError: null のメソッド「getSheetByName」を呼び出せません。(行 4、ファイル「コード」、プロジェクト「doGet」)
補足情報(FW/ツールのバージョンなど)
初心者のため、わかりやすいご説明だとありがたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/14 11:56