実現したいこと
GAS初心者ですが、有休申請フォームを作成しています。
前提
こちらのサイトからコピーさせていただいたものを使用していますが、
承認者からのメール送信ができず困り果てています。
https://ardent.jp/rentoffice-consultation-center/costdown/cost-down/yukyu-kanri-spredsheet/
初心者の為、どこを直すべきなのかわからず、チャットGPTでも確認しましたが
解決できませんでした。
ご助力いただけますと幸いです。
発生している問題・エラーメッセージ
承認者へメールが届いた後、承認・否認を選択すると以下の用なエラーが表示されます。
Exception: メールを送信できませんでした: 受信者が指定されていません(行 86、ファイル「コード」)
該当のソースコード
function sendMessage(e) {
/*
//eパラメタ等から対象シートのRowを取得、ついでにSSに申請中と登録
var row = e.range.getRow();
var sheet = SpreadsheetApp.openById("1IkV6s8ZpW1-WtVfuUnmUSSQTfpqWws3m5RxFuUj4YYI").getSheetByName("有給申請管理"); //XXXXをSSのIDへ変更
sheet.getRange(row,6).setValue("申請中");
// メールに貼り付けるBodyをgenerateBody関数から作成
var bodies = generateBody(e.values);
// urlはこのGASをウェブアプリで公開した、アドレス+パラメータとして、rowとanswerをつける
var url = "https://script.google.com/macros/s/AKfycbxzPcgvN8IuKfId0rN9t2Un40kUxYvqIo8iFtHUePI9RMH5HvSlmVXW6nF0mNW3hEAW/exec"+ "?row=" + row +"&answer="; //https:...以下ををスクリプトをウェブアプリケーションとして公開した際に表示されるURLへ変更
//承認者のメアドを取得。事前にシート対象セルに計算式をはめ込む(ここは、GAS上で条件分岐を入れて検索してもOK)
sheet.getRange(row, 7).setValue("=if(E"+ row +"="全日",1,0.5)");
sheet.getRange(row, 8).setValue("=vlookup(B"+ row + ",mail_adress_master!A:D,3,false)");
sheet.getRange(row, 9).setValue("=vlookup(B"+ row + ",mail_adress_master!A:D,2,false)");
sheet.getRange(row, 10).setValue("=vlookup(B"+ row +",mail_adress_master!A:D,4,false)");
var approver = sheet.getRange(row,10).getValue();
var recipient = approver;
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){
/*
var row = e.parameter.row;
var sheet = SpreadsheetApp.openById("1IkV6s8ZpW1-WtVfuUnmUSSQTfpqWws3m5RxFuUj4YYI").getSheetByName("有給申請管理"); //XXXXをSSのIDへ変更
var values = sheet.getRange(row, 1, 1, 9).getValues()[0];
Logger.log(values);
var bodies = generateBody(values);
var answers = e.parameter.answer;
var result = {
ok:"承認",
ng:"否認"
};
var recipient = values[3];
Logger.log("Values: " + values);
if(answers){
sheet.getRange(row,6).setValue(result[answers]);
var subject = "有給休暇取得申請" + result[answers] +"のお知らせ";
var body = "";
body += '以下の有給休暇取得申請が'+ result[answers] +'されました。\n\n';
body += bodies.html;
var html = '';
html += '<h1>有給休暇取得'+ result[answers] +'のお知らせ</h1>';
html += '<p>以下の有給休暇取得申請が'+ result[answers] +'されました。</p>';
html += bodies.html;
if (recipient) {
// メールを送信
GmailApp.sendEmail(recipient, subject, body, { htmlBody: html });
} else {
// recipient が空白の場合のエラーハンドリング
Logger.log("受信者が指定されていません。");
}
}
var html = '';
html += '<h1>有給休暇取得申請の'+ result[answers] + '</h1>';
html += '<p>あなたは以下の有給休暇取得申請を'+ result[answers] +'しました</p>';
html += bodies.html;
return HtmlService.createHtmlOutput(html);
};
function generateBody(values){
var staff_name = values[1];
var date = values[2];
var tmail = values[3];
var hours = values[4];
var busyo2 = values[8];
var busyo4 = values[6];
var formattedDate = new Date(date).toLocaleDateString('ja-JP', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
var plane = "";
plane += '<ul>';
plane += '<li>氏名: ' + staff_name + '</li>';
plane += '<li>有給取得日: ' + formattedDate + '</li>';
plane += '<li>担当メールアドレス: ' + tmail + ' </li>';
plane += '<li>時間: ' + hours + '</li>';
plane += '<li>部署: ' + busyo4 + '</li>';
plane += '</ul>';
var html = '';
html += '<ul>';
html += '<li>氏名: ' + staff_name + '</li>';
html += '<li>有給取得日: ' + formattedDate + '</li>';
html += '<li>担当メールアドレス: ' + tmail + ' </li>';
html += '<li>時間: ' + hours + '</li>';
html += '<li>部署: ' + busyo2 + '</li>';
html += '</ul>';
return {plane:plane, html:html};
}
。
0 コメント