前提・実現したいこと
特定の列にデータが入力された際にタイムスタンプが押されるようにしたいです。
具体的にはV列以降に他システムからDLしたデータを貼り付けると、
A列に貼り付けた日付を入力するようGASを組んでいます。
発生している問題・エラーメッセージ
V列のデータが入っている最終行を認識させ、
A列にタイムスタンプを押すようfor文を組んだつもりが、
スプシの最終行までタイムスタンプが押されてしまいます。
該当のソースコード
function setTimeStamp() {
// 定義
const TARGET_COLUMN = 'a'; // タイムスタンプを押す列(A列)
// シート定義
var ss = SpreadsheetApp.getActiveSpreadsheet(); // 編集したスプレッドシート
var sheet = ss.getActiveSheet(); // 編集したシート(タブ)
var range = sheet.getActiveRange(); // 編集した範囲
var col = range.getColumnIndex(); // 編集した列
var row = range.getRowIndex(); // 編集した行
var lastRow = sheet.getRange('V:V').getLastRow(); // V列最終行
// 現在時刻
var currentTime = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd');
if(col == 22) { // 編集した列がステータス列(22列目)の場合
for(let i = row; i <= lastRow; i++){
// タイムスタンプを押す
ss.getRange(TARGET_COLUMN + i).setValue(currentTime);
}
}
}
試したこと
lastRowのコードを変更し、スプシの最終行からデータが入っている最終行を検索する方法
getNextDataCell(SpreadsheetApp.Direction.UP)も試してみましたが組み方が悪いのか
データが入力された先頭行にしかタイムスタンプが押されませんでした…。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/08 05:26 編集
2021/01/08 15:32
2021/01/12 02:50