Googleスプレッドシートにタイムスタンプを作る。(Google Apps Script)

Googleスプレッドシートにチェックボックスを挿入し、チェックされた時に時間が出るようにしたいという要望があった。

GoogleAppsScriptによって設定していく。

チェックボックスに✓をいれると、右隣のセルに、「時:分:秒」が表示されるレイアウト用

  1. 拡張機能 ⇒ Apps Script を開く
  2. コード.js に記載されている以下の記述を全て消す。
function myFunction() {
  
}
  1. 以下のスクリプトを貼り付ける。
/** 変更箇所あり ↓ */

// function myFunction ()  {
//   setStamp ( "シート名" ,  [ "タイムスタンプを押す列", "タイムスタンプを押す列", ..... ] );
// }

function myFunction ()  {
 setStamp ( "シート1" ,  [ "D", "F", "H" ] );
}


/** 変更箇所なし ↓ */

function setStamp(sheetName, stamp) {
 const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZAAABAC";
 const indexArry = stamp.map(x => alphabet.indexOf(x));
 const done = true;
 const undone = false;
 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
 const range = sheet.getActiveRange();
 const col = range.getColumnIndex();
 const value = range.getValue();
 const currentTime = Utilities.formatDate(new Date(), "Asia/Tokyo", "HH:mm:ss");


 if (indexArry.includes(col) && SpreadsheetApp.getActiveSheet().getName() == sheetName) {
     if (value == done) {
       range.offset(0, 1).setValue(currentTime);
       return;
     }
     if (value == undone) {
       range.offset(0, 1).setValue("");
       return;
     }
   }
 }

/** ここまでコピぺ ↑ */
  1. プロジェクトを保存する
  2. ▶実行 ボタンを押し、エラーがないことを確認する(※初めての実行時に「承認が必要です」と出たら許可していく)
  3. トリガーを設定する。(スプレッドシートから、編集時)