前提・実現したいこと
社内申請・承認システムを作っております。
申請者は指定のグーグルフォームから送信することで、承認者にスプレッドシートのURLと申請の明細がメールで通知されます。
承認者はフォームの回答が記録されるスプレッドシートを確認し、該当する行のチェックボックスにチェックを入れると、チェックした行の情報がメールで他の部署に送信される、というものです。
承認者から他の部署へメールを送る時、日付が
Thu Apr 29 2021 00:00:00 GMT+0900 (日本標準時)
という形式になるので、
2021/04/29
という形式にして見やすくしたいです。
発生している問題・エラーメッセージ
申請者から承認者へのメールでは
2021/04/29
という形式で送られるのですが、
承認者から他の部署へのメールでは
Thu Apr 29 2021 00:00:00 GMT+0900 (日本標準時)
となってしまいます。
該当のソースコード
1.申請者から承認者へフォームから送信したときに通知されるソースコード
function sendMessage(e) {
var [timeStamp, email, apply, change, announce, delivery, company, person, title, address, tel, sender, attachment] = e.values;
const recipient = 'xxxxxxxxxxxxx@xxxxxxxx.co.jp'; //承認者のメールアドレス
const subject = '〇〇〇のお知らせ';
let body = '';
body += '〇〇〇を申請致します。\n\n';
body += ・申請者: ${apply}\n
;
body += ・人事異動: ${change}\n
;
body += ・人事異動発令日: ${announce} \n
;
body += ・祝電お届け日: ${delivery}\n
;
body += ・取引先名: ${company} \n
;
body += ・受取人: ${person} \n
;
body += ・役職名: ${title} \n
;
body += ・住所: ${address} \n
;
body += ・電話番号: ${tel} \n
;
body += ・差出人: ${sender} \n
;
body += ・添付資料: ${attachment} \n\n
;
body += '以下URLからスプレッドシートをご確認いただき、内容に間違いがなければチェックボックスにチェックを入れてご承認お願い致します。\n';
body += 'https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxx'; //スプレッドシートのURL
GmailApp.sendEmail(recipient, subject, body);
}
2.承認者がチェックを入れ、他の部署へチェックを入れた行の情報がメールで送られるソースコード
function showCheckboxInfo() {
var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
var myCell = mySheet.getActiveCell();
var rule = myCell.getDataValidation();
if (rule != null) {
var criteria = rule.getCriteriaType();
var status = myCell.getValue()
if ( criteria == 'CHECKBOX' && status == true) {
var row = myCell.getRow();
var result = Browser.msgBox('チェックボックスが押されました。メールを送信しますか?', Browser.Buttons.OK_CANCEL);
if(result == 'ok'){
sendMail(row);
} else if (result == 'cancel'){
mySheet.getRange(row,14).uncheck(); // チェックを外す
}
}
}
}
function sendMail(row) {
//スプレッドシートAppを呼び出し
var ss = SpreadsheetApp.getActiveSpreadsheet();
//0番目のシートを取得してsheetに格納
var sheet = ss.getActiveSheet();
//選択されているアクティブなセルを取得
var range = sheet.getActiveCell();
//アクティブセルの行数をrowへ格納
var row = range.getRow();
const recipient = 'xxxxxxxxxxx@xxxxxxxx.co.jp'; //他の部署のメールアドレス
const subject = '〇〇〇のお知らせ';
const apply = sheet.getRange(row, 3).getValue();
const change = sheet.getRange(row, 4).getValue();
const announce = sheet.getRange(row, 5).getValue();
const delivery = sheet.getRange(row, 6).getValue();
const company = sheet.getRange(row, 7).getValue();
const person = sheet.getRange(row, 8).getValue();
const title = sheet.getRange(row, 9).getValue();
const address = sheet.getRange(row, 10).getValue();
const tel = sheet.getRange(row, 11).getValue();
const sender = sheet.getRange(row, 12).getValue();
const attachment = sheet.getRange(row, 13).getValue();
var body = '〇〇様\n\n〇〇〇をお送りします。〇〇〇をお願い致します。\n\n';
body += '・申請者:' + apply + '\n';
body += '・人事異動:' + change + '\n';
body += '・人事異動発令日:' + announce + '\n';
body += '・祝電お届け日:' + delivery + '\n';
body += '・取引先名:' + company + '\n';
body += '・受取人:' + person + '\n';
body += '・役職名:' + title + '\n';
body += '・住所:' + address + '\n';
body += '・電話番号:' + tel + '\n';
body += '・差出人:' + sender + '\n';
body += '・添付資料:' + attachment + '\n';
GmailApp.sendEmail(recipient, subject, body);
}
試したこと
スプレッドシートの日付が入る列(人事異動発令日、祝電お届け日)の書式を書式なしテキストにしてみましたが、
フォームから新しい申請があるとその行は日付形式になってしまいました。
また、全くの初心者のため、ネットに公開されている様々なGASのコードを切り貼りし、日付を文字列に変換するコードも参照しましたが、どこにどうやって書けばいいか分かりませんでした。フォームからの申請~他の部署へのメール送信までは動作確認できておりますが、日付の表示がどうしてもうまくいかず、質問させていただきました。宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。