GASで特定のシートにのみ作用する方法はあるのでしょうか。 下記のスクリプトで、チェックボックスを入れると右隣のセルにタイムスタンプが自動でつくようにしました。
GASで特定のシートにのみ作用する方法はあるのでしょうか。 下記のスクリプトで、チェックボックスを入れると右隣のセルにタイムスタンプが自動でつくようにしました。 同じシートの中に、6月・7月・8月…と同じレイアウトで、シート(タブ)をつくったのですが、例えば6月で編集すると、他のシートの同じセルにもタイムスタンプが押されてしまいます。 どうしたらよいでしょうか。 function setTimeStamp() { const TARGET_COLUMN1 = 'e'; const STATUS_DONE = true ; // 完了ステータス const STATUS_UNDONE = false ; // 未完了ステータス // シート定義 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('6月'); // 編集したシート(タブ)の名前 var range = sheet.getActiveRange(); // 編集した範囲 var col = range.getColumnIndex(); // 編集した列 var row = range.getRowIndex(); // 編集した行 var value = range.getValue(); // 編集した値 // 現在時刻 var currentTime = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'HH:mm:ss'); /** ここから ↓ */ if(col == 4) { //チェックボックス列(4列目)の場合 if(value == STATUS_DONE) { // 編集したステータスが「完了」の場合 // タイムスタンプを押す sheet.getRange(TARGET_COLUMN1 + row).setValue(currentTime); return; } } if(col == 4) { // チェックボックス列(4列目)の場合 if(value == STATUS_UNDONE) { // 編集したステータスが「未完了」の場合 // タイムスタンプを消す sheet.getRange(TARGET_COLUMN1 + row).setValue(""); return; } } /** ここまで ↑ */ }
Excel・43閲覧・250
ベストアンサー
トリガーを設定して試してみましたら >例えば6月で編集すると、他のシートの同じセルにもタイムスタンプが押されてしまいます。 これは起きませんでしたが自分の環境だと「7月にチェックを入れると6月のチェックボックスの隣に時間が入る」という動作になりました var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('6月'); // 編集したシート(タブ)の名前 で6月のシートを指定しているからだろうと思ったので var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); としたら7月は7月で動くようになりました 参考になると良いのですが
質問者からのお礼コメント
ありがとうございます!参考にいろいろ変更したら上手くいきました。
お礼日時:6/30 16:08