定型業務の業務管理を行う際、担当の進捗をスプレッドシートを用いて管理することが良く行われます。
業務の各ステップに納期を設けても、納期に遅れがちな人にはリマインドを送る必要があります。
とはいえ、各人の納期をいちいち覚えておくのはめんどくさい。。。
そこで、googleのスプレッドシートに記載の進捗を毎日自動で確認し、遅れそうな場合にはリマンドメールを自動送信してくれるGASを作成しましたので、そのコードを共有します。
作成したツール
以下のようなスプレッドシートでの進捗管理表から進捗状況をチェックし、納期の5日前を過ぎたものについてリマインドメールを自動で飛ばすGASです。

FからI列に各案件のステップごとの納期と進捗を記載します。
作成したGAS
function myFunction() {
//データ取得
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getActiveSheet();
// 表の開始行・終了行数を取得
const begin_row = 4;
const last_row = sheet.getLastRow();
//今日の日付を取得
let today = new Date();
today = Utilities.formatDate(today, "JST","yyyy/MM/dd");
//1行ずつ判別
let col_list = ["F","G","H","I"];// 日付を見る列
let step_list = ["step1","step2","step3","step4"];// 日付を見る列
let result_list = [];//判別した結果、リマインドを送るリスト
let counta = 0;
for(let i = begin_row; i <= last_row; i=i+2) {
for(let j = 0; j < col_list.length; j++) {
//納期取得
let dead_line_cell = col_list[j]+i;
let dead_line_value = sheet.getRange(dead_line_cell).getValue();
let dead_line_day = Utilities.formatDate(dead_line_value,"JST","yyyy/MM/dd");
dead_line_value.setDate(dead_line_value.getDate()- 5 );
let alarm_day = Utilities.formatDate(dead_line_value, "JST","yyyy/MM/dd");
//進捗の判別
let progress_cell_num = i+1;
let progress_cell = col_list[j]+progress_cell_num;
let progress = sheet.getRange(progress_cell).getValue();
// 納期の達成の判別:達成しておらずアラーム日を過ぎている場合
if(today >= alarm_day && progress !== "〇"){
// 案件名
let cell1 = "B"+i;
let title = sheet.getRange(cell1).getValue();
// 担当者
let cell2 = "C"+i;
let responsible = sheet.getRange(cell2).getValue();
// 結果をリストに格納
result_list[counta] = `案件:${title},担当者:${responsible},step:${step_list[j]},納期:${dead_line_day}`;
counta++;
break;//次の行に進む
}
}
}
//送信文の作成
let text = result_list[0] + '\n';
for(let k=1;k < result_list.length; k++){
text = text + result_list[k] + '\n';
}
//結果をメールを送る
GmailApp.sendEmail('任意のメルアド','【業務納期アラート】',text);
}
コメント