Google Apps Script (GAS)で編集した時にタイムスタンプを押すスクリプト

GoogleスプレッドシートやGoogleフォームで大活躍するGoogle Apps Script(GAS)。チームのタスク管理でも使えるGASコードをメモがてら紹介します。

やりたいこと

下の画像のような、タスクとそれらのステータス列があり、ステータスを「完了」に変更すると、完了日時の列に自動でタイムスタンプを押したい。

実装

1. スクリプトエディタを立ち上げ

「ツール > スクリプトエディタ」で立ち上げられます。

2. コーディング

/**
 * ステータスの変更時にタイムスタンプを押す処理
 */
function setTimeStamp() {

  // 定義
  const TARGET_COLUMN = 'd';   // タイムスタンプを押す列(D列)
  const STATUS_DONE   = '完了'; // 完了ステータス

  // シート定義
  var ss     = SpreadsheetApp.getActiveSpreadsheet(); // 編集したスプレッドシート
  var sheet  = ss.getActiveSheet();                   // 編集したシート(タブ)
  var range  = sheet.getActiveRange();                // 編集した範囲
  var col    = range.getColumnIndex();                // 編集した列
  var row    = range.getRowIndex();                   // 編集した行
  var value  = range.getValue();                      // 編集した値
  
  // 現在時刻
  var currentTime  = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm');
  
  if(col == 3) { // 編集した列がステータス列(3列目)の場合
    if(value == STATUS_DONE) { // 編集したステータスが「完了」の場合
      // タイムスタンプを押す
      ss.getRange(TARGET_COLUMN + row).setValue(currentTime);
      return;
    }
  }
}

トリガー設定手順

1. 「現在のプロジェクトのトリガー」をクリック

2. 「トリガーを追加」をクリック

3. トリガー設定を入力し、保存

4. Googleアカウントにログイン

ログインしていても再度聞かれると思います。

5. 「詳細」クリック > 「◯◯(安全ではないページ)に移動」をクリック

「このアプリは確認されていません」という注意喚起のようなページが表示されますが、左下の「詳細」をクリックした後、
「◯◯(安全ではないページ)に移動」をクリックしましょう。

6. 「許可」をクリックして完了!

検証

実際にシートでステータスを変更して、無事成功!
しっかりタイムスタンプが押されました!

One Comment

長谷川貴雄 2021/3/2 Reply

ちょうどタイムスタンプを打ちたかったので大変参考になりました。

コメントを残す