スプレッドシートで期限管理③|GASでGoogleカレンダーに登録!管理者向けタスク管理

前回の記事では、期限が近づいたタスクを担当者にGmailでリマインダーを送る方法をご紹介しました。

それに加えて、管理者やリーダーがチーム全体のタスク状況をカンタンに把握できる方法があれば、より効率的な管理が可能になります。

そこで今回は、未完了のタスクを管理者のGoogleカレンダーに自動登録する方法をご紹介します。

この方法を活用することで、

  • チームのタスク期限をカレンダー上で可視化
  • 重要なタスクを見逃さず、進捗状況を把握
  • 対応漏れを防ぎ、スムーズな業務遂行が可能

となり、より効果的なタスク管理が実現できます。

目次

完成イメージ

スプレッドシート
期限2日以内になっても未完了のタスクについて、管理者(スクリプト実行者)のカレンダーに登録
Googleカレンダー登録
  • GASでスプレッドシートのタスク情報をチェック
  • 期限が「2日以内」の未完了タスクを自動で管理者(スクリプト実行者)カレンダーに登録
  • タイトルは「【リマインダー】タスク名」、詳細には担当者・期限日・リマインドメッセージを記載
  • 管理者がチームのタスクをカレンダーで把握するのに活用

手順

GASの実行手順

STEP
スプレッドシートの準備

今回の例では、以下の入力項目をもとに期限を判定し、カレンダー登録を行います。

  • シート名:タスク管理
  • A列:タスク名
  • B列:担当者
  • C列:期限
  • D列:進捗状況

スクリプト実行者のカレンダーに登録されます。

シート名を「タスク管理」として、GAS実行時にそのシートを参照します。

(シート名を変更する場合はGASのスクリプトも併せてご変更ください)

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
スクリプトの作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

function addTasksToManagerCalendar() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("タスク管理"); 
  var data = sheet.getDataRange().getValues(); 
  var today = new Date();
  var calendar = CalendarApp.getDefaultCalendar(); // 実行者のカレンダーを取得

  for (var i = 1; i < data.length; i++) { 
    var task = data[i][0];  // タスク名
    var person = data[i][1]; // 担当者
    var deadline = new Date(data[i][2]); // 期限日
    var status = data[i][3]; // 進捗状況

    var daysUntilDeadline = Math.ceil((deadline - today) / (1000 * 60 * 60 * 24));

    // 期限が「2日以内」で、かつ「完了」でない場合にカレンダー登録
    if (daysUntilDeadline <= 2 && daysUntilDeadline > 0 && status != "完了") {
      var eventTitle = "【リマインダー】" + task;
      var eventDetails = "タスクの期限が近づいています。\n" +
                         "担当者: " + person + "さん\n" +
                         "タスク: " + task + "\n" +
                         "期限: " + deadline.toLocaleDateString() + "\n\n" +
                         "期限まであと" + daysUntilDeadline + "日です。対応状況を確認してください。";

      // 実行者のGoogleカレンダーに予定を追加
      calendar.createAllDayEvent(eventTitle, deadline, {description: eventDetails});
      
      Logger.log("カレンダー登録成功: " + eventTitle);
    }
  }
}

スクリプトの説明
シート情報の取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("タスク管理"); 
  • スクリプトが実行されると、「タスク管理」 というシートを取得します。
  • 必要に応じてシート名とスクリプトをご変更ください。
シートのデータをすべて取得
var data = sheet.getDataRange().getValues(); 

  • スプレッドシート全体のデータ を data という配列に格納します。
現在の日付を取得
var today = new Date();
  • 今日の日付を取得し、期限までの日数を計算するために使用します。
データを1行ずつ処理(1行目はヘッダーのためスキップ)
for (var i = 1; i < data.length; i++) { 
  • 2行目以降(i=1)から順に処理 します。
各行から必要な情報を取得
var task = data[i][0];  // タスク名
var person = data[i][1]; // 担当者
var deadline = new Date(data[i][2]); // 期限日
var status = data[i][3]; // 進捗状況
  • スプレッドシートの各列のデータを変数に格納します。
    • A列(タスク名) → task
    • B列(担当者) → person
    • C列(期限日) → deadline
    • D列(進捗状況) → status
期限までの日数を計算
var daysUntilDeadline = Math.ceil((deadline - today) / (1000 * 60 * 60 * 24));
  • deadline(期限日)と today(今日の日付)の差分を計算し、期限までの日数(整数値) を求めます。
  • Math.ceil() を使い、小数点以下を切り上げます。(例: 1.5日 → 2日)
条件に一致するタスクのみカレンダーに登録
if (daysUntilDeadline <= 2 && daysUntilDeadline > 0 && status != "完了") {
  • 以下の条件を満たす場合にメールを送信します。
    • 期限が「2日以内」かつ「今日より未来の日付」
    • 「完了」になっていないタスク
  • 以下の場合は登録されません。
    • 期限が3日以上先
    • 期限が過ぎている(期限切れタスク)
    • すでに「完了」しているタスク
カレンダーイベントのタイトルと詳細を作成
var eventTitle = "【リマインダー】" + task;
var eventDetails = "タスクの期限が近づいています。\n" +
                   "担当者: " + person + "さん\n" +
                   "タスク: " + task + "\n" +
                   "期限: " + deadline.toLocaleDateString() + "\n\n" +
                   "期限まであと" + daysUntilDeadline + "日です。対応状況を確認してください。";
  • タイトル:【リマインダー】タスク名
  • カレンダーの詳細情報

    タスクの期限が近づいています。
    担当者: 田中さん
    タスク: タスク①
    期限: 2/22/2025
    期限まであと1日です。対応状況を確認してください。
カレンダーにイベントを登録
calendar.createAllDayEvent(eventTitle, deadline, {description: eventDetails});
  • Googleカレンダーに「終日イベント」として登録します。
送信ログを記録
Logger.log("カレンダー登録成功: " + eventTitle);
  • Google Apps Scriptのログにカレンダー登録成功のメッセージを出力します。
STEP
スクリプトを保存

スクリプトを書いたら、好きな名前を付けて保存します。

(例:「タスク期限_カレンダー登録」)

STEP
スクリプトを実行

スクリプトを手動で実行すると、期限の2日以内で未完了のタスクが判定され、スクリプト実行者のカレンダーに登録されます。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

トリガーを設定すれば、毎日自動で実行できます。

STEP
タスク期限をGoogleカレンダーに登録

管理者自身がスクリプトを実行すると、自分のカレンダーに登録されます。

トリガーを設定してGASを自動実行

トリガーを設定することで、毎日または特定の時間間隔で自動実行が可能です。

STEP
GASエディタを開く
画像に alt 属性が指定されていません。ファイル名: GAS.png

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
トリガーページを開く

時計アイコン」をクリックしてトリガーページを開きます。

STEP
「トリガーを追加」をクリック

トリガーを追加」または「新しいトリガーを作成します」をクリックします。

STEP
トリガーを実行するイベントを設定

(時間主導型を選択した例)

実行する関数を選択
  • トリガーを実行した際に動かす関数を指定します。
  • 例:addTasksToManagerCalendar
実行のデプロイを選択:
  • どのバージョンのスクリプトを使用してトリガーを実行するかを選びます。
  • 通常は「Head」を選択して、最新のバージョンを使用します。
イベントのソースを選択
  • トリガーのきっかけとなるイベントを指定します。
  • 「時間主導型」などの選択肢があります。
  • 時間主導型は、指定されたスケジュールに基づいてスクリプトを実行するものです。
時間ベースのトリガーのタイプを選択
  • 時間主導型のイベントソースを選択した場合に表示され、どの頻度で実行するかを設定します。
  • 日付ベースのタイマー」を選択すると、毎月決まった時間にスケジュールを設定できます。
STEP
トリガーを保存

保存をクリックして、トリガー設定完了となります。

これで毎日決まった時間にスクリプトが実行されます。

設定したトリガーは一覧で表示されます。

まとめ

Google Apps Script (GAS) を使えば、期限の迫ったタスクをカレンダーに登録することができます。

「どのタスクが未完了か?」を管理者がカレンダー上で視覚的に確認 できるため、適切な対応がしやすくなります。

チームのタスクを管理する時にご活用ください。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次