簡體   English   中英

如何在Google表格上為多個單元設置時間戳?

[英]How to time stamp more than one cell on Google Sheets?

目前在我的Gooogle工作表文檔中有4個定期更新的單元格。 每次更新時,我都想給一個單獨的單元加時間戳。

我可以使附件腳本適用於1個單元格,但是當我復制腳本使其適用於另一個單元格時,它將停止較早版本的腳本。

function onEdit(event)
{ 
  var timezone = "GMT+1";
  var timestamp_format = "dd-MM-yyyy hh:mm:ss"; 
  var updateColName = "Development Team Comments";
  var timeStampColName = "To update select cell";
  var sheet = event.source.getSheetByName('WIP'); 


  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(timeStampColName);
  var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
  if (dateCol > -1 && index > 1 && editColumn == updateCol) { 
    var cell = sheet.getRange(index, dateCol + 1);
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
    cell.setValue(date);
  }
}

我也嘗試過此代碼,該代碼似乎不適用於后續單元:

function onEdit(event)
{ 
  var timezone = "GMT+1";
  var timestamp_format = "dd-MM-yyyy hh:mm:ss"; // Timestamp Format. 
  var updateColName = "Development Team Comments";
  var timeStampColName = "To update select cell";
  var sheet = event.source.getSheetByName('WIP'); //Name of the sheet where you want to run this script.

  var responseArray = ["o update select cell", "Bupa time stamp","Date Stamp Move Live"];
  var questionArray = ["Development Team Comments", "BDC proofing comments", "Approved Y"];


  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(timeStampColName);
  var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
  if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!
    var cell = sheet.getRange(index, dateCol + 1);
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
    cell.setValue(date);
  }
}

我希望我應該能夠做的是能夠更新任何單元格,並像上面的腳本一樣為它們顯示當前時間。 我是否需要重復此操作,或者是否有插入單元格引用的方法。

看起來您的腳本對於您實際需要的內容而言非常復雜,它會檢查所有標onEdit(e) ,當您實際需要的只是基於if語句的幾個setValue() ,將其放入onEdit(e)觸發器中就可以了!

function onEdit(e) {
  var sheet = e.source.getSheetByName('WIP');
  var timezone = 'GMT+1';
  var format = 'dd-MM-yyyy hh:mm:ss';

  var cell = e.range;
  var row = cell.getRow();
  var col = cell.getColumn();

  var stamp = Utilities.formatDate(new Date(), timezone, format);

  if (col === 1) {                          //if edited cell is in column A
    sheet.getRange(row, 4).setValue(stamp); //set timestamp in column D
  }
  if (col === 2) {                          //if edited cell is in column B
    sheet.getRange(row, 5).setValue(stamp); //set timestamp in column E    
  }
  if (col === 3) {                          //if edited cell is in column C
    sheet.getRange(row, 6).setValue(stamp); //set timestamp in column F
  }
}

該腳本將適用於C列,如果要添加更多內容,您只需調整if語句中的數字和getRange()即可滿足您的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM