別のセルが編集されたときにセルにデータを自動的に追加するようにGoogleスプレッドシートを取得しようとしていますが、onedit関数をグローバルに機能させることしかできないようです。
具体的には、B2、B3、B4などを編集した場合、N2、N3、N4などにタイムスタンプまたはユーザー名を自動的に入力してほしい。
どんな助けでも大歓迎です!
ありがとう
別のセルが編集されたときにセルにデータを自動的に追加するようにGoogleスプレッドシートを取得しようとしていますが、onedit関数をグローバルに機能させることしかできないようです。
具体的には、B2、B3、B4などを編集した場合、N2、N3、N4などにタイムスタンプまたはユーザー名を自動的に入力してほしい。
どんな助けでも大歓迎です!
ありがとう
ここで答えを展開します...
function onEdit(e)
{
var row = e.range.getRow();
var sheet = e.range.getSheet();
// if B2, B3, B4 etc. was edited, fill N2, N3, N4 etc. with a timestamp
var value = new Date();
// ... or the user's name.
// var value = Session.getActiveUser().getEmail();
var headerRows = 1; // # header rows to ignore
// Skip header rows
if (row <= headerRows) return;
// We're only interested in column B (aka 2)
if (e.range.getColumn() != 2) return;
sheet.getRange(row,14).setValue(value); // N<row>
}
データ挿入の日付と時刻を自動的に追加したい場合があります。
この問題に遭遇したばかりで、 Internet Geeksから提供されたコードを修正しました。
彼らのコードは、指定された列を更新することによって機能し、タイムスタンプは別の指定された列の同じ行に挿入されます。
変更したのは、タイムスタンプが日付形式ではなく文字列であるため、日付と時刻を分離したことです。私のwasはグラフの生成に役立ちます。
変更を追跡する列を指定してから、日付と時刻の upDate 列と upTime 列をそれぞれ作成します。
function onEdit(event) {
var timezone = "GMT+1";
var date_format = "MM/dd/yyyy";
var time_format = "hh:mm";
var updateColName = "Резултат";
var DateColName = "upDate";
var TimeColName = "upTime";
var sheet = event.source.getActiveSheet(); // All sheets
// var sheet = event.source.getSheetByName('Test'); //Name of the sheet where you want to run this script.
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(DateColName);
var timeCol = headers[0].indexOf(TimeColName);
var updateCol = headers[0].indexOf(updateColName);
updateCol = updateCol + 1;
if (dateCol > -1 && timeCol > -1 && index > 1 && editColumn == updateCol) {
// only timestamp if 'Last Updated' header exists, but not in the header row itself!
var cellDate = sheet.getRange(index, dateCol + 1);
var cellTime = sheet.getRange(index, timeCol + 1);
var date = Utilities.formatDate(new Date(), timezone, date_format);
var time = Utilities.formatDate(new Date(), timezone, time_format);
cellDate.setValue(date);
cellTime.setValue(time);
}
}
これが人々に役立つことを願っています。