0

これが私が書いたスクリプトです。その行が編集されるたびに、行の最後にタイム スタンプが付けられます。

function setDate() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet();
  //Get Active cell
      var mycell = ss.getActiveSelection();
      var cellcol = mycell.getColumn();
      var cellrow = mycell.getRow();
  //Check to see if column is A or B to trigger
      if (cellcol == EDITMECOLUMN)
      {
  //check for row to trigger
        if (cellrow == EDITMEROW)
        {
  //Find cell and set date in a defined cell
      var celldate = sheet.getRange(EDITMEROW, EDITMECOLUMN);
      celldate.setValue(new Date());
  //end set date
        }
      }
 }

うまく機能しますが、行ごとに手動でスクリプトをコピーする代わりに、行ごとに反復するように変更するにはどうすればよいですか? スプレッドシートに入力するフォームがあり、フォーム内の各トピックの「最新」の結果がレポート スプレッドシートに表示されます。各行はフォームのトピックを表し、フォームのユーザーは一度に数週間のセクションをスキップすることを選択できるため、各行の列のタイム スタンプが必要です。

EDITMExx の部分は、列番号または行番号を配置する場所にすぎません。

関数は onEdit() トリガーから呼び出されます

4

2 に答える 2

2

すべての行を反復処理する for ループ (または任意の種類のループ) を作成します。何かのようなもの:

var numRows = sheet.getDataRange().getNumRows();
var data = sheet.getDataRange().getValues();
for(var i=0; i<numRows; i++){
    data[i][someColumnWhereYouWantDateSet].setValue(new Date());
}
于 2013-05-15T14:04:51.147 に答える