1

別のセルが編集されたときにセルにデータを自動的に追加するようにGoogleスプレッドシートを取得しようとしていますが、onedit関数をグローバルに機能させることしかできないようです。

具体的には、B2、B3、B4などを編集した場合、N2、N3、N4などにタイムスタンプまたはユーザー名を自動的に入力してほしい。

どんな助けでも大歓迎です!

ありがとう

4

2 に答える 2

1

ここで答えを展開します...

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>
}
于 2013-12-03T22:11:22.167 に答える
0

データ挿入の日付と時刻を自動的に追加したい場合があります。

この問題に遭遇したばかりで、 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);
  }
}

これが人々に役立つことを願っています。

于 2016-05-06T11:29:19.820 に答える