前提・実現したいこと
GASの有給申請フローを作成したく、ネットで調べてコード通りに作成したのですが
(多少数値等操作)途中までは動くのですが「do get」コードが作動しないみたいです。
初心者のため色々調べて試してはいるのですが作動しないです。どの部分が間違っているのかも検討が付きません。
よろしくお願いいたします。
発生している問題・エラーメッセージ
,,,
エラーメッセージ
Exception:無効なメール:~(行35、ファイル「do get コード」
,,,
該当のソースコード
function sendMessage(e) { /* <summary> Formで登録された内容をeパラメタとして受け取り、SS上から必要データを取り出して、 承認者向けにメールを送付する。メールの内容として、承認・否認の選択肢を付与する。 SSには登録されたデータのStatusを”申請中”として登録する */ //eパラメタ等から対象シートのRowを取得、ついでにSSに申請中と登録 var row = e.range.getRow(); var sheet = SpreadsheetApp.openById("~").getSheetByName("有給申請管理"); //XXXXをSSのIDへ変更 activesheet.getRange(row,7).setValue("申請中"); // メールに貼り付けるBodyをgenerateBody関数から作成 var bodies = generateBody(e.values); // urlはこのGASをウェブアプリで公開した、アドレス+パラメータとして、rowとanswerをつける var url = "~"+ "?row=" + row +"&answer="; //https:...以下ををスクリプトをウェブアプリケーションとして公開した際に表示されるURLへ変更 //承認者のメアドを取得。事前にシート対象セルに計算式をはめ込む(ここは、GAS上で条件分岐を入れて検索してもOK) sheet.getRange(row, 8).setValue("=if(E"+ row +"=\"全日\",1,0.5)"); sheet.getRange(row, 9).setValue("=lookup(B"+ row + ",mail_adress_master!A:A,mail_adress_master!C:C)"); sheet.getRange(row, 10).setValue("=lookup(B"+ row +",mail_adress_master!A:A,mail_adress_master!D:D)"); var approver = sheet.getRange(row,10).getValue(); var recipient = approver; var subject = "有給休暇取得申請のお知らせ"; var body = ""; body += '有給休暇取得申請がありました\n\n'; body += bodies.plain; body += "承認する場合は以下をクリック"; body += url + "ok"; body += "承認しない場合は以下をクリック"; body += url + "ng"; var 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}); } function doGet(e){ /* <summary> 承認者がメールで選択したのち、選択した結果をSSのStatus項目に反映する。 また、申請者には結果をメールする。そして、承認者には選択した結果をブラウザ画面で表示する */ var row = e.parameter.row; var sheet = SpreadsheetApp.openById("~").getSheetByName("有給申請管理"); //XXXXをSSのIDへ変更 var values = sheet.getRange(row,1,1,7).getValues()[0]; Logger.log(values); var bodies = generateBody(values); var answers = e.parameter.answer; var result = { ok:"承認", ng:"否認" }; var recipient = values[11] if(answers){ sheet.getRange(row, 7).setValue(result[answers]); var subject = "有給休暇取得申請" + result[answers] +"のお知らせ"; var body = ""; body += '以下の有給休暇取得申請が'+ result[answers] +'されました。\n\n'; body += bodies.plain; var html = ''; html += '<h1>有給休暇取得'+ result[answers] +'のお知らせ</h1>'; html += '<p>以下の有給休暇取得申請が'+ result[answers] +'されました。</p>'; html += bodies.html; GmailApp.sendEmail(recipient, subject, body, {htmlBody:html}); var html =''; html += '<h1>有給休暇取得申請の'+ result[answers] + '</h1>'; html += '<p>あなたは以下の有給休暇取得申請を'+ result[answers] +'しました</p>'; html += bodies.html; return HtmlService.createHtmlOutput(html); }; } function generateBody(values){ var staff_number = values[1]; var staff_name = values[2]; var date = values[3]; var days = values[4]; var plain = ""; plain += '社員番号: ' + staff_number + '\n'; plain += '名前: ' + staff_name + '\n'; plain += '有給取得日: ' + date + ' \n'; plain += '有給日数: ' + days + ' \n'; var html = ''; html += '<ul>'; html += '<li>社員番号: ' + staff_number + '</li>'; html += '<li>名前: ' + staff_name + '</li>'; html += '<li>有給取得日: ' + date + ' </li>'; html += '<li>有給日数: ' + days + ' </li>'; html += '</ul>'; return {plain:plain, html:html}; }
補足情報(FW/ツールのバージョンなど)
スプレッドシート、URLは伏せてあります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。