
出張に関する承認フローをタイトルの流れで作成しようと思っています。
https://tonari-it.com/gas-workflow-url-parameter/
上記の方を参考にし、質問内容や行列の数値などを変更して作成しましたが、下記のようなエラーメッセージが出て実行できません。
『TypeError: Cannot read property 'parameter' of undefined
doGet @ コード.gs:2』
申請のフォームから集約するスプレッドシートを作成しており、上記のエラーが出るたびにコードを書き換えたり試してみたのですが、rangeやvalueやrowやparameterに関するところだけ同じエラーになっています。
大変恐縮ですが、どなたかお力添えいただきたく存じます。
よろしくお願いします。
作成したスクリプトは下記です。
function doGet(e) {
const row = e.parameter.row;
const sheet = SpreadsheetApp.getActiveSheet();
const values = sheet.getRange(row, 1, 1, 12).getValues()[0];
const bodies = generateBodies(values);
const answer = e.parameter.answer;
const result = {
ok: '承認',
ng: '否認'
};
sheet.getRange(row, 12).setValue(result[answer]);
const recipient = bodies.email;
const subject = 出張申請${result[answer]}のお知らせ
;
let body = '';
body += 出張申請が${result[answer]}されました。\n\n
;
body += bodies.plain;
let html = '';
html += <h1>出張申請${result[answer]}のお知らせ</h1>
;
html += <p>以下の出張申請が${result[answer]}されました。</p>
;
html += bodies.html;
GmailApp.sendEmail(recipient, subject, body, {htmlBody: html});
html = '';
html += <h1>出張申請の${result[answer]}</h1>
;
html += <p>あなたは以下の出張申請を${result[answer]}しました</p>
;
html += bodies.html;
return HtmlService.createHtmlOutput(html);
}
function generateBodies(values){
const [number,date,name,reason,organization,place,leeding,lodging,car,freeway] = values;
let plain = '';
plain += ・公文書番号: ${number}\n
;
plain += ・日付: ${date}\n
;
plain += ・名前: ${name} \n
;
plain += ・主張理由: ${reason}\n
;
plain += ・主催: ${organization}\n
;
plain += ・出張場所: ${place}\n
;
plain += ・引率: ${leeding}\n
;
plain += ・宿泊: ${lodging}\n
;
plain += ・交通手段: ${car}\n
;
plain += ・高速の有無: ${freeway}\n\n
;
let html = '<ul>';
html += <li>・公文書番号: ${number}</li>
;
html += <li>・日付: ${date}</li>
;
html += <li>・名前: ${name}</li>
;
html += <li>・主張理由: ${reason}</li>
;
html += <li>・主催: ${organization}</li>
;
html += <li>・出張場所: ${place}</li>
;
html += <li>・引率: ${leeding}</li>
;
html += <li>・宿泊: ${lodging}</li>
;
html += <li>・交通手段: ${car}</li>
;
html += <li>・高速の有無: ${freeway}</li>
;
html += '</ul>';
return {
email: email,
plain: plain,
html: html
};
}
function sendMessage(e) {
const row = e.range.getRow();
const sheet = e.range.getSheet();
sheet.getRange(row, 12).setValue('確認中');
const bodies = generateBodies(e.values);
let url = 'https://script.~';
url += ?row=${row}&answer=
;
const recipient = '担当のメールアドレス';
const subject = '出張申請のお知らせ';
let body = '';
body += '以下の申請があります。\n\n';
body += bodies.plain;
body += '承認する場合は、以下URLをクリックしてください\n';
body += url + 'ok';
body += '否認する場合は、以下URLをクリックしてください\n';
body += url + 'ng';
let html = '';
html += '<h1>出張申請のお知らせ</h1>';
html += '<p>以下の申請があります。</p>';
html += bodies.html;
html += <p>承認する場合は、<a href="${url}ok">[承認]</a>をクリックしてください</p>
;
html += <p>否認する場合は、<a href="${url}ng">[否認]</a>をクリックしてください</p>
;
GmailApp.sendEmail(recipient, subject, body, {htmlBody: html});
}












回答1件
あなたの回答
tips
プレビュー