
前提
GASの初心者です。
HPのコードをコピーし、GoogleFormsでGASを使用し自作のワークフローを作成にチャレンジしています。
実現したいこと
GASでスプレッドシートの指定場所に決済ステータスの結果を表示させたいです。
ご教示お願い致します。
発生している問題・エラーメッセージ
承認・否認がスプレッドシート16行目の決済ステータス列に表示されない
11列目に上書きされてしまう
エラーメッセージ
approval.gs
TypeError: Cannot read properties of undefined (reading 'parameters')
doGet @ approval.gs:8
全コード
コード.gs
FormApp.getActiveForm()
function onFormSubmit(e) {
// プレーンテキストのメール本文
let body = "承認をお願いいたします。\n\n"
// HTMLテキストのメール本文
let htmlBody = "<p>承認をお願いいたします。</p>"
// GoogleFormから回答内容を取得します let itemResponses = e.response.getItemResponses(); let recipientMail = ""; let approverMail = ""; for (var i=0; i < itemResponses.length; i++) { let formData = itemResponses[i]; let formLabel = formData.getItem().getTitle(); let response = formData.getResponse(); switch (formLabel) { case "承認者のメールアドレス": approverMail = response; break; case "申請者名": name = response; break; case "申請内容": title = response; break; case "開始日": daystart = response; break; case "開始時間": starttime = response; break; case "終了日": dayend = response; break; case "終了時間": endtime = response; break; case "振替休日": holiday = response; break; case "代休の根拠となる勤務日": day = response; break; case "業務内容": content = response; break; case "現場名": sitename = response; break; default: note = response; break; } } let spreadSheetId = "1rEVcm1FtDcUUpmJmZgoNE_ALOA1tR8zdn1Rc7FVw-ow"; // スプレッドシートのID
let spreadsheet = SpreadsheetApp.openById(spreadSheetId);
let activeSheet = spreadsheet.getActiveSheet();
// この行を追加します(スプレッドシートの最終行を取得する) let lastRowNo = activeSheet.getLastRow(); // URLを先程公開したDeploy as web appのURLに書き換えてパラメータを追加します。 let url = "https://script.google.com/a/macros/naribun.com/s/AKfycbxjRXuMwARbtC6PMQBcLkwx3cNaafxRNd39yMAtVSESdKIm1Fe8vZMdzEvEEQP6rXylEw/exec?row=" + lastRowNo;
body = body + "申請内容:" + title + "\n申請者名:" + "\n開始日:" + daystart + "\n開始時間:" + starttime + "\n終了日:" + dayend + "\n終了時間:" + endtime + "\n振替休日:" + holiday + "\n代休の根拠となる勤務日:" + day + "\n業務内容:" + content + "\n現場名:" + sitename + "\n備考:" + note;
htmlBody = htmlBody + "<span>申請内容:" + title + "</span><br><span>申請者名:" + name + "</span><br><span>開始日:" + daystart + "</span><br><span>開始時間:" + starttime + "</span><br><span>終了日:" + dayend + "</span><br><span>終了時間:" + endtime + "</span><br><span>振替休日:" + holiday + "</span><br><span>代休の根拠となる勤務日:" + day + "</span><br><span>業務内容:" + content + "</span><br><span>現場名:" + sitename +"</span><br><span>備考:" + note + "</span><br><br>";
htmlBody = htmlBody + "<a href=" + url + "&status=approve" + ">承認</a> <a href=" + url + "&status=deny" + ">否認</a>";
GmailApp.sendEmail(approverMail, title, body, {htmlBody: htmlBody});
}
approval.gs
function doGet(e) {
let spreadSheetId = "1rEVcm1FtDcUUpmJmZgoNE_ALOA1tR8zdn1Rc7FVw-ow";
let spreadsheet = SpreadsheetApp.openById(spreadSheetId);
let activeSheet = spreadsheet.getActiveSheet();
let html = ""; if (e.parameters.status == "approve") { html = "<h1>承認しました。</h1>"; activeSheet.getRange(e.parameters.row, 11).setValue('承認'); } else { html = "<h1>否認しました。</h1>"; activeSheet.getRange(e.parameters.row, 11).setValue('否認'); } return HtmlService.createHtmlOutput(html);
}
試したこと
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー