実現したいこと
スプレッドシートのセルから取得した日付をわかりやすい形にしたいです。
Fri May 31 2024 00:00:00 GMT+0900 (日本標準時)
↓
2024年5月31日
といった表示に変換希望です。
発生している問題・分からないこと
Googleフォームで入力された内容を取得し内容をメールで送り、メールに記載のあるURLを踏んだらステータスを「承認」とするワークフローを作成しております。
動作はしているのですが、日付が分かりにくい形でしか表示されません。
それ以外は問題なく
フォーム入力時トリガーにてメール送付→メールに記載のURLを踏むとスプレッドシートのステータスが確認中から承認へ変更→申請した本人へ承認された旨メールが届きます。
参考にしたサイトはこちらです。
https://tonari-it.com/google-form-purchase-of-equipment/
該当のソースコード
sendMessage
1function sendMessage(e) { 2 3 const row = e.range.getRow(); 4 const sheet = e.range.getSheet(); 5 6 sheet.getRange(row, 10).setValue('申請中'); 7 8 const bodies = generateBodies(e.values); 9 10 let url = '●●'; 11 // ↑ 公開したウェブアプリのURL 12 13 url += `?row=${row}`; 14 // ↑ スプレッドシートで何行目に入力されたか 15 16 17 18 const recipient = '●●@●●' 19 // ↑ 承認者のメールアドレスを''の中に入力する 20 21 22 const subject = '【社名】勤怠申請のお知らせ'; 23 24 let body = ''; 25 body += '勤怠申請がありました。\n'; 26 body += '内容を確認し、承認作業お願い致します。\n\n'; 27 28 body += bodies.plain; 29 30 body += '承認する場合以下URLをクリックしてください。\n'; 31 body += url; 32 33 34 35 36 let html = ''; 37 html += '<h1>【社名】勤怠申請のお知らせ</h1>'; 38 39 html += '<p>勤怠申請がありました。</br>'; 40 html += '内容を確認し、承認作業をお願いします。</p>'; 41 42 html += bodies.html; 43 44 html += `<p>承認する場合は、<a href="${url}">こちら</a>をクリックしてください</p>`; 45 html += url; 46 47 48 GmailApp.sendEmail(recipient, subject, body, {htmlBody: html}); 49 50} 51 52 53 54 55 56 57
generateBodies
1function generateBodies(values){ 2 3 const [timeStamp, id, name, item, days, start, end, memo, email] = values; 4 5 6 let plain = ''; 7 plain += `・社員ID : ${id}\n`; 8 plain += `・氏名: ${name}\n`; 9 plain += `・申請区分: ${item}\n`; 10 plain += `・対象日: ${days}\n`; 11 plain += `・開始時間: ${start}\n`; 12 plain += `・終了時間: ${end}\n`; 13 plain += `・申請事由: ${memo}\n\n`; 14 15 let html = '<ul>'; 16 html += `<li>社員ID: ${id}</li>`; 17 html += `<li>氏名: ${name}</li>`; 18 html += `<li>申請区分: ${item}</li>`; 19 html += `<li>対象日: ${days}</li>`; 20 html += `<li>開始時間: ${start}</li>`; 21 html += `<li>終了時間: ${end}</li>`; 22 html += `<li>申請事由: ${memo}</li>`; 23 html += '</ul>'; 24 25 return { 26 email: email, 27 plain: plain, 28 html: html 29 }; 30} 31
doGet
1function doGet(e) { 2 const row = e.parameter.row; 3 const app = SpreadsheetApp.openById('●●●'); 4 const sheet = app.getSheetByName('勤怠申請フォームテスト'); 5 6 const values = sheet.getRange(row, 1, 1, 10).getValues()[0]; 7 const [timeStamp, id, name, item, days, start, end, memo, email] = values; 8 9 10 11 12 sheet.getRange(row, 10).setValue('承認'); 13 14 15 16 const subject = '【社名】勤怠申請のお知らせ'; 17 let body = ''; 18 body += '以下の勤怠申請が承認されました。\n\n'; 19 body += `・社員ID : ${id}\n`; 20 body += `・氏名 : ${name}\n`; 21 body += `・申請区分 : ${item}\n`; 22 body += `・対象日 : ${days}\n`; 23 body += `・開始時間 : ${start}\n`; 24 body += `・終了時間 : ${end}\n`; 25 body += `・申請事由 : ${memo}\n\n`; 26 body += '株式会社 社名\n'; 27 28 GmailApp.sendEmail(email, subject, body); //申請者にメールを送る 29 30 31 let html = ''; 32 html += '<h1>勤怠申請の承認</h1>'; 33 html += '<p>以下の勤怠申請を承認しました。</p>'; 34 html += '<ul>'; 35 html += `<li>社員ID : ${id}</li>`; 36 html += `<li>氏名 : ${name}</li>`; 37 html += `<li>申請区分 : ${item}</li>`; 38 html += `<li>対象日 : ${days}</li>`; 39 html += `<li>開始時間 : ${start}</li>`; 40 html += `<li>終了時間 : ${end}</li>`; 41 html += `<li>申請事由 : ${memo}</li>`; 42 html += '</ul>'; 43 html += '<p>誤って承認した場合は、管理部 へご連絡ください。</br>'; 44 html += '株式会社 社名</p>'; 45 46 return HtmlService.createHtmlOutput(html); 47}
試したこと・調べたこと
上記の詳細・結果
Utilities.formatDateも使用してみたのですが、
引用テキストException: The parameters (String,String,String) don't match the method signature for Utilities.formatDate.
となりエラーとなります。変数の設定がおかしいのでしょうか?
補足
当方初めてGASに触れる上にエンジニアでもない素人です。
上司に予算なしででワークフローを構築しろを言われ手探りで勉強しております。
可能であれば後学のために初心者でもわかりやすい言葉を使用していただけると嬉しいです。
0 コメント