<実現したいこと>
要回答管理シートを作成しています。動作でうまくいってる部分も、念のためコードのところで関連するかもしれませんので記載しています。
①もしも未回答の案件があったら「どの案件があと何日で締切なのか」をGメールで自動送信。スプレッドシート上のアドレス先に各個人にそれぞれ未回答案件の内容が届く。トリガーでは毎月1日に設定→解決済
②もしも、未回答案件があったら締切日の3日前に未回答の方へメールが届く。→今回つまずいいる部分
function myFunction_5_2_4() { // シートの各データ取得 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sh = ss.getActiveSheet(); const lastRow = sh.getLastRow(); const lastColumn = sh.getLastColumn(); // A-G列が案件情報 const _taskInfo = sh.getRange(2, 1, lastRow, 7).getValues(); // 案件情報を(二次元配列から)オブジェクトへ変換 const taskInfo = createObj_(_taskInfo); // 対象者と案件対応状況の開始行と開始列を定義 const startRow = 1; const startColumn = 7; // メール送付の判定情報(対象者と案件対応状況の表)を取得 G-J列 const mailInfo = sh.getRange(startRow, startColumn, lastRow, lastColumn - startColumn + 1).getValues(); // 対象者へ未対応案件をまとめてメール通知 informTodoTask_(taskInfo, mailInfo); } /** * 案件情報を管理番号をキーとするオブジェクトに変換 * * @param {object[][]} 案件情報(二次元配列) * @return {object} 案件情報(ステータス:CLOSE, 開始日が未来は除外) */ function createObj_(array){ // 案件情報格納用のオブジェクト let taskInfoObj = {}; for(let i = 1; i < array.length; i++){ // ステータスがOPENで開始日以降のものをオブジェクトに格納 if(array[i][0] === 'OPEN' && new Date() > array[i][4]){ // 各案件番号に対して、案件名、締切日、残日数を格納 taskInfoObj[array[i][6]] = { task_name: array[i][2], // 案件名 deadline: Utilities.formatDate(new Date(array[i][3]),'JST','yyyy/MM/dd'), // 締切日 remainingDays: array[i][5] // 残日数 } } } return taskInfoObj; } /** * 各個人の未対応案件をチェックして 対象案件をまとめてメール通知 * * @param {object} 案件情報 * @param {object[][]} 対象者の案件対応状況 */ function informTodoTask_(obj, array){ // 1列(c)ずつメンバーの未対応案件をチェック // 1件でも未対応があればメール送付 for(let c = 1; c < array[0].length; c++){ // mailInfo[0][c] 対象者のメールアドレス // mailInfo[1][c] 対象者名 // 未対応案件を追記する変数 let todoTask = ''; // 1行(r)ずつ未対応案件をチェックしてtodoTaskに格納 for(let r = 3; r < array.length; r++){ // mailInfo[r][0] 管理番号 // 管理番号がオブジェクトの中にあり、かつ未対応であれば変数todoTaskに案件情報をセット if(obj[array[r][0]] && array[r][c] === '未'){ // 未対応案件の案件名、締切日、残日数をセット todoTask += `${obj[array[r][0]]['task_name']} ${obj[array[r][0]]['deadline']} ${obj[array[r][0]]['remainingDays']} \n`; } } // 未対応案件があればメール通知 ※ todoTaskが空の場合はfalse if(todoTask){ // 必要情報を準備してメール通知 const mailTo = array[0][c]; const targetName = array[1][c]; const mailTitle = '未完了案件のお知らせ'; const now = Utilities.formatDate(new Date(),'JST','yyyy/MM/dd HH:mm'); const mailHeader = `※${now}時点の案件対応状況をお知らせします。`; const mailBody = `${mailHeader}\n${targetName}さん\n\n${todoTask}`; GmailApp.sendEmail(mailTo, mailTitle, mailBody); } //ここから追加した分 if(todoTask=='済'); //もし済なら何もしない。 else if('未' && 2<day && day <=3){ //未対応かつ3日前の案件の場合 const mailTitle = '締切3日前のお知らせ'; const mailBody = `完了未対応案件がございます。対応案件 `; GmailApp.sendEmail(mailTo, mailTitle, mailBody); }
→実現したいことの対象は下記に記載の部分のコードです。(実現したいこと②:一番下の行から〜下から6行目のこの部分です。)明らかにこれでは不足しているということはわかるのですが、今の知識だと正直にお話しますと何を追加すれば良いのかがあまりピンときておりません...m(_ _)mなんとなく、もしも未対応かつ3日以内ならメールを送るという内容にしたくて下記のように記載してみました。ヒントや、そもそもこの考え間違っているよ!みたいなところとかでも良いので教えていただけると幸いです。
<悩んでいる該当部分>
//ここから追加した分
if(todoTask=='済'); //もし済なら何もしない。
else if('未' && 2<day && day <=3){ //未対応かつ3日前の案件の場合
const mailTitle = '締切3日前のお知らせ';
const mailBody = 完了未対応案件がございます。対応案件
;
GmailApp.sendEmail(mailTo, mailTitle, mailBody);
}
<エラー>
構文エラー: SyntaxError: Unexpected end of input 行: 86 ファイル: 進捗通知メールリマインド追加.gs

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/28 14:23
退会済みユーザー
2021/11/28 15:16
2021/11/29 05:22