実現したいこと
googleフォームで申請を受け、スプレッドシートに反映、メールにて承認操作を行いたい
前提
以前、有給申請のフローのアドバイスを頂き、同じ形で作成しています。
フォームで申請を受け、担当者に「~申請がありました」という内容のメールが届くのですが、その内容の部分で指定したい内容が表示されず、悩んでいます。
該当のソースコード
function sendMessage(e) { /* <summary> Formで登録された内容をeパラメタとして受け取り、SS上から必要データを取り出して、 承認者向けにメールを送付する。メールの内容として、承認・否認の選択肢を付与する。 SSには登録されたデータのStatusを”申請中”として登録する */ //eパラメタ等から対象シートのRowを取得、ついでにSSに申請中と登録 var row = e.range.getRow(); var sheet = SpreadsheetApp.openById("1hk_hbd1HvkvJZ4EX_Gi7HK0Lp9BNKcnKt8CLnimXrDo").getSheetByName("ボランティア申込"); //XXXXをSSのIDへ変更 sheet.getRange(row,5).setValue("申請中"); // メールに貼り付けるBodyをgenerateBody関数から作成 var bodies = generateBody(e.values); // urlはこのGASをウェブアプリで公開した、アドレス+パラメータとして、rowとanswerをつける var url = "https://script.google.com/macros/s/AKfycby_yz-GEv-Rg3plypCBh95IH3ILkIrHD_tFlPM18i5T0MY0tZCQL2F19cC85VzqF1G5Rw/exec"+ "?row=" + row +"&answer="; //https:...以下ををスクリプトをウェブアプリケーションとして公開した際に表示されるURLへ変更 var recipient = 'XXXXXXX@gmail.com'; var subject = "ボランティア申込みのお知らせ"; var body = ""; body += 'ボランティアの申込みがありました\n\n'; body += bodies.plane; body += "承認する場合は以下をクリック"; body += url + "ok"; body += "承認しない場合は以下をクリック"; body += url + "ng"; var html =""; html += '<h1>ボランティアの申込みがありました</h1>'; html += '<p>以下の申込みがありました</p>'; html += bodies.plane; html += "<p>承認する場合は、<a href="+ url + "ok>【承認する】</a>をクリックしてください</p>" html += "<p>承認しない場合は、<a href="+ url + "ng>【否認する】</a>をクリックしてください</p>" GmailApp.sendEmail(recipient, subject, body, {htmlBody:html}); } function doGet(e) { /* <summary> 承認者がメールで選択したのち、選択した結果をSSのStatus項目に反映する。 また、申請者には結果をメールする。そして、承認者には選択した結果をブラウザ画面で表示する */ // エディタでdoGetを実行したときの承認メール送信確認用 // e = {}; // e.parameter = {}; // e.parameter.row = 10;//有効なメアドがある行 // e.parameter.answer = 'ok'; const row = e.parameter.row; const sheet = SpreadsheetApp.openById('1hk_hbd1HvkvJZ4EX_Gi7HK0Lp9BNKcnKt8CLnimXrDo').getSheetByName('ボランティア申込'); //XXXXをSSのIDで書換え const values = sheet.getRange(row, 1, 1, 8).getValues()[0]; Logger.log(values); const bodies = generateBody(values); const answers = e.parameter.answer; const result = { ok: '承認', ng: '否認' }; const recipient = values[3]; if (answers) { sheet.getRange(row, 5).setValue(result[answers]); const subject = 'ボランティア申込' + result[answers] + 'のお知らせ'; let body = ''; body += '以下の内容でボランティアの申込が' + result[answers] + 'されました。\n\n'; body += bodies.html; let html = ''; html += '<h1>ボランティア申込' + result[answers] + 'のお知らせ</h1>'; html += '<p>以下の内容でボランティアの申込が' + result[answers] + 'されました。</p>'; html += bodies.html; GmailApp.sendEmail(recipient, subject, body, { htmlBody: html }); html = '';// 元のコードではhtmlをvarで再宣言していたが、letで宣言したので再利用に変更 html += '<h1>ボランティア申込' + result[answers] + '</h1>'; html += '<p>あなたは以下のボランティア申込を' + result[answers] + 'しました</p>'; html += bodies.html; return HtmlService.createHtmlOutput(html); }; } function generateBody(values){ var name = values[1]; var p_name = values[2]; var mail = values[3]; var syozoku = values[6]; var bora = values[7]; var bikou = values[8]; var plane = ""; plane += '<ul>'; plane += '<li>児童名: ' + name + '</li>'; plane += '<li>保護者名: ' + p_name + '</li>'; plane += '<li>担当メールアドレス: ' + mail + '</li>'; plane += '<li>所属: ' + syozoku + '</li>'; plane += '<li>参加希望のボランティア: ' + bora + '</li>'; plane += '<li>備考: ' + bikou + ' </li>'; plane += '</ul>'; var html = ''; html += '<ul>'; html += '<li>児童名: ' + name + '</li>'; html += '<li>保護者名: ' + p_name + '</li>'; html += '<li>担当メールアドレス: ' + mail + '</li>'; html += '<li>所属: ' + syozoku + '</li>'; html += '<li>参加希望のボランティア: ' + bora + '</li>'; html += '<li>備考: ' + bikou + ' </li>'; html += '</ul>'; return {plane:plane, html:html}; }
試したこと
function generateBody(values){
var name=values[1]←この数字の部分を色々と変えてみましたが、変化がありません。