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

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

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

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

575閲覧

GAS: getRangeが呼び出せずGASウェブアプリケーションページでエラーが表示される

Beginner2

総合スコア11

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2019/07/13 08:51

前提・実現したいこと

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/ツールのバージョンなど)

初心者のため、わかりやすいご説明だとありがたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

webアプリってことはコンテナバウンドスクリプトじゃなくて、activesheetがなさそうなので、SpreadsheetApp.OpenByIdとかSpreadsheetApp.OpenByUrlとかを使う必要がありそうです

投稿2019/07/13 14:21

papinianus

総合スコア12705

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

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

Beginner2

2019/07/14 11:56

ありがとうこざいます! SpreadsheetApp.OpenByUrlを使ったらできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問