簡體   English   中英

應用程序腳本在對該選項卡進行任何編輯時更新谷歌表格中每個選項卡上的一個單元格中的時間戳

[英]Apps script to update timestamp in one cell on each tab in a google sheet upon any edit of that tab

我有第三方為我更新了谷歌表格,並且想要一個簡單的腳本,在對該選項卡進行任何編輯時,在腳本的每個選項卡的單元格 B1 中顯示時間戳。 因此,如果以任何方式編輯 Sheet1,Sheet1 的單元格 B1 將更新時間戳。 與 Sheet2 相同。 我有一個適用於 Sheet2 的腳本,但不適用於 Sheet1。 如果我刪除第二個函數,它適用於 Sheet1。 我確定我做錯了,希望能得到任何幫助。 這是我現在擁有的:

function onEdit() {
  SpreadsheetApp.getActive().getSheetByName("Sheet1").getRange("B1").setValue(new Date());
}

function onEdit() {
  SpreadsheetApp.getActive().getSheetByName("Sheet2").getRange("B1").setValue(new Date());
}

您是否知道 onEdit 始終需要在電子表格中進行手動編輯這一事實? 某些第三方應用程序對工作表的更新不會被視為編輯,因此不會更新時間戳。

如果您手動編輯電子表格(工作表),您可以嘗試

function onEdit(e) {
e.source.getActiveSheet().getRange('B1').setValue(new Date());
}

由於 JavaScript 的工作方式,單個 Google Apps 腳本項目不必使用onEdit函數。

以下代碼示例使用 if 語句和 on edit 事件對象僅將時間戳添加到已編輯的工作表

function onEdit(e) {
  const name = e.range.getSheet().getName();
  if(name === 'Sheet1') e.source.getSheetByName("Sheet1").getRange("B1").setValue(new Date());
  if(name === 'Sheet2') e.source.getSheetByName("Sheet2").getRange("B1").setValue(new Date());
}

嘗試這個:

function onEdit(e) {
  const sh = e.range.getSheet();
  const shts = ["Sheet1","Sheet2"];//Add the sheet names you wish it to work on
  if(~shts.indexOf(sh.getName())) {
    sh.getRange("B1").setValue(new Date());
  }
}

暫無
暫無

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

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