特定のシートの特定の列が更新された際にタイムスタンプが押されるGASを作成しているのですがうまく反映しないのでアドバイスを頂けますでしょうか。
前提・実現したいこと
特定のシートのM列に情報が入った際、同じシートのA列にタイムスタンプが押されるようにしたいです。M列には他システムから抽出したデータを一括してコピペで反映させる前提です。
発生している問題・エラーメッセージ
下記のコードを組みましたがM列を編集してもA列にタイムスタンプが押されません。
該当のソースコード
var ss = SpreadsheetApp.getActiveSpreadsheet(); var shName = ss.getSheetName(); var sh = ss.getSheetByName("シート名"); function onEdit(e) { var row = e.range.getRow(); var col = e.range.getColumn(); var num = e.range.getValues().length; if ((shName == "シート名") && (col == 12)) { sh.getRange(row,col-11,num,1).setValue(getUpdTime()); } } function getUpdTime() { var now = new Date(); var yy = now.getFullYear(); var mm = now.getMonth()+1; var dd = now.getDate(); return yy + "/" + mm + "/" + dd; }
試したこと
以前別シート作成した下記コードをもとに、
var sheet = ss.getActiveSheet(); を
var sheet = ss.getSheetByName("シート名");
var shName = ss.getSheetName();へ、
if(col == 12) { を
if ((shName == "シート名") && (col == 12)) { へ
変えて組んでみましたが上手くいきませんでしたので
ネットから拾った上記のコードで試してみましたが、こちらも上手くいきませんでした。
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 currentTime = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd'); if(col == 12) { // 編集した列がM列(12列目)の場合 // タイムスタンプを押す ss.getRange(TARGET_COLUMN + row).setValue(currentTime); } }
回答1件
あなたの回答
tips
プレビュー