Note: The other languages of the website are Google-translated. Back to English

如何在Google表格的另一列中更新數據時自動插入時間戳?

如果單元格範圍較大,並且要在另一列中修改或更新數據時將時間戳自動插入相鄰的單元格中。 您如何在Google表格中解決此任務?

使用腳本代碼在另一列中更新數據時自動插入時間戳記


使用腳本代碼在另一列中更新數據時自動插入時間戳記

以下腳本代碼可以幫助您快速輕鬆地完成此工作,請按以下步驟操作:

1。 點擊 工具 > 腳本編輯器,請參見屏幕截圖:

2。 在打開的項目窗口中,請複制並粘貼以下腳本代碼以替換原始代碼,請參見屏幕截圖:

function onEdit(e)
{ 
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() == "order data") //"order data" is the name of the sheet where you want to run this script.
  {
    var actRng = sheet.getActiveRange();
    var editColumn = actRng.getColumn();
    var rowIndex = actRng.getRowIndex();
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
    var dateCol = headers[0].indexOf("Date") + 1;
    var orderCol = headers[0].indexOf("Order") + 1;
    if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol) 
    { 
      sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy")); 
    }
  }
}

備註:在上面的代碼中, 訂單數據 是您要使用的工作表名稱, 日期 是要插入時間戳的列標題,並且 訂購 是列標題,您要更新的單元格值。 請根據您的需要進行更改。

3。 然後保存項目窗口,並為此新項目輸入名稱,請參見屏幕截圖:

4。 然後返回到工作表,現在,在修改“訂單”列中的數據時,當前時間戳會自動插入到“日期”列中與修改後的單元格相鄰的單元格中,請參見屏幕截圖:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (62)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
這可以修改以適用於任何工作表嗎?
網站主持人對此評論進行了最小化
我是否需要在腳本編輯器中運行該函數才能使其工作? 嘗試時我不斷收到此錯誤:TypeError:無法從未定義中讀取屬性“源”。 (第 3 行,文件“代碼”)
網站主持人對此評論進行了最小化
您好!
我也有這個問題。 最終是我將文件重命名為“訂單數據”,但是一旦我將工作表而不是工作簿重命名為“訂單數據”,我的工作表名稱仍然是“Sheet1”,一切正常。
網站主持人對此評論進行了最小化
您好,感謝您提供的代碼,它完美地滿足了我的需求。 但是,我需要您的幫助才能知道如何添加此日期出現的條件。
事實上,我只想在插入數字時才有這個日期,而不是別的。
你知道我應該為此添加什麼代碼嗎?
我根本不是編碼員,只是一個複制粘貼,這就是為什麼我真的需要幫助而自己無法弄清楚的原因。
非常感謝您的幫助

停止
網站主持人對此評論進行了最小化
我還想知道在將信息插入前一個單元格後如何鎖定該單元格。
網站主持人對此評論進行了最小化
我也有同樣的問題
網站主持人對此評論進行了最小化
你好。 感謝您的解決方案。 我有一個共享文件,我希望在有人編輯工作表時反映時間。 目前,這僅在我編輯工作表時有效。 我怎麼做? 提前致謝 :)
網站主持人對此評論進行了最小化
我喜歡這個劇本。 我怎樣才能只得到這個打印時間而不是日期? 這就是我需要的
網站主持人對此評論進行了最小化
將最後一行更改為 sheet.getRange(rowIndex, dateCol).setValue(new Date());
這將返回一個日期時間,但如果需要,您可以從格式 -> 數字 -> 時間中僅顯示時間
網站主持人對此評論進行了最小化
你好,

您也可以應用以下代碼,但是,您應該將時區更改為您自己的。 請嘗試一下。

功能 onEdit(e)
{
var sheet = e.source.getActiveSheet();
if (sheet.getName() == "order data") //"order data" 是您要運行此腳本的工作表的名稱。
{
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf("Date") + 1;
var orderCol = headers[0].indexOf("Order") + 1;
if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)
{
sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "GMT+8:00", "HH:mm:ss"));
}
}
}
網站主持人對此評論進行了最小化
如何讓它同時具有時間和日期?


謝謝。


斯科特
網站主持人對此評論進行了最小化
嗨,斯科特,

要使列同時具有日期和時間,您應該應用以下腳本代碼。 插入代碼後,然後選擇要插入日期和時間的列,然後單擊“格式”>“數字”>“日期時間”將單元格格式化為日期時間格式。

功能 onEdit(e)
{
var sheet = e.source.getActiveSheet();
if (sheet.getName() == "order data") //"order data" 是您要運行此腳本的工作表的名稱。
{
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf("Date") + 1;
var orderCol = headers[0].indexOf("Order") + 1;
if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)
{
sheet.getRange(rowIndex, dateCol).setValue(new Date());
}
}
}

請嘗試一下,希望對您有所幫助!
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
您可以簡單地在代碼第 14 行的日期之後添加 hh:mm:ss(複製如下)。 注意:我必須將 UTC+8 更改為 GMT-5 才能讓它標記美國東部的正確時間。

sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "GMT-5", "MM-dd-yyyy hh:mm:ss"));
網站主持人對此評論進行了最小化
謝謝,它的作品
網站主持人對此評論進行了最小化
Hi

你能幫我嗎? 我需要顯示中美洲時間,我已將時區更改為 GTM-6 但它不起作用,它仍然顯示太平洋時間,(相隔 6 小時)

問候
網站主持人對此評論進行了最小化
您好,


每當“訂單”更新時,我希望在“日期”列中獲得等效的時間戳,而且每當“交付狀態”或“付款狀態”也更新時(構成列標題,但我希望你明白我的意思)。

這是可能的嗎?


謝謝
網站主持人對此評論進行了最小化
我收到錯誤“TypeError:無法從未定義中讀取屬性“源”。(第 3 行,文件“代碼”)。我必須在這一行中提供工作表的鏈接嗎?


謝謝,


瑞安
網站主持人對此評論進行了最小化
是的,一樣。 管理員,請幫忙。
網站主持人對此評論進行了最小化
使用函數 var sheet = SpreadsheetApp.getActiveSheet();
相反 var sheet = e.source.getActiveSheet(); 在第 3 行。
它解決了我的問題。
我正在這樣使用它
f
{
var sheet = SpreadsheetApp.getActiveSheet();
if (sheet.getName() == "Sheet1") //"Sheet1" 是工作表的名稱而不是文件名
{
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf("時間戳") + 1;
var orderCol = headers[0].indexOf("日期輸入") + 1;
if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)
{
sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "UTC+5.30", "MM-dd-yyyy HH:MM:SS")); //我也在印度 GMT 5.30+ 和 Time 中使用它
}
}
}
網站主持人對此評論進行了最小化
感謝您提供此代碼,這正是我所需要的。 唯一的問題是我正在運行一個將一些數據發送到谷歌表的腳本,但是只有當我手動編輯單元格時,時間戳才會觸發此數據。 有什麼建議嗎?
網站主持人對此評論進行了最小化
你好,我也遇到了同樣的問題,請問你解決了嗎?
網站主持人對此評論進行了最小化
你好,我也有類似的問題,請問你解決了嗎?
網站主持人對此評論進行了最小化
您好我遇到一個錯誤 TypeError: Cannot read property "source" from undefined。 (第 3 行,文件“代碼”)
能夠在這方面提供幫助
網站主持人對此評論進行了最小化
同樣在這裡。 請幫忙。
網站主持人對此評論進行了最小化
同樣的問題在這裡
網站主持人對此評論進行了最小化
Hi
我得到了代碼工作,謝謝!
如果我想包含多個列,我將如何更改代碼?
網站主持人對此評論進行了最小化
我正在嘗試做同樣的事情,有運氣嗎?
網站主持人對此評論進行了最小化
嘿! 我在函數體之後得到了這個代碼“Missing }。(第 18 行,文件“代碼”)”我該如何解決這個問題? 非常感謝! 這真太了不起了!
網站主持人對此評論進行了最小化
應該如何修改腳本以在連續的列範圍而不是單個列中查找更改? 例如,如果標記為“金額”、“類別”和“類型”的列而不是示例腳本中標記為“訂單”的單個列發生變化,則觸發腳本。
網站主持人對此評論進行了最小化
再會! 我只是想知道是否可以為時間戳添加代碼,以便在主單元格被清除後自動消失。 謝謝!
網站主持人對此評論進行了最小化
Hola, hice los pasos que mencionas pero me aparece un error: TypeError: No se puede leer la propiedad "source" de undefined。 (第 3 行,檔案“Código”)
網站主持人對此評論進行了最小化
我用這段代碼修復它。


函數 onEdit() {
var sheet = SpreadsheetApp.getActiveSheet();
var capture = sheet.getActiveCell();
if (sheet.getName() == "Updates") //"Updates" 是工作表名稱。
if(capture.getColumn() == 1) {
var add = capture.offset(0, 1); //“0”是引用單元格更新的行,“0”是同一行,“1”在“1”列的引用是右側的1列。
var 數據 = 新日期();
data = Utilities.formatDate(data, "GMT-03:00","dd/MM' 'HH:mm' '");
add.setValue(數據);
}

}
網站主持人對此評論進行了最小化
嗨,法布里西奧!

在 1 上我必須寫 Date 列(我想在哪裡獲取日期)和在 0 列上我寫文本?
我需要“”或類似的嗎?

謝謝!
網站主持人對此評論進行了最小化
你好豪爾赫,不,你只需要寫數字參考列,如 A = 1 , B = 2 .....
網站主持人對此評論進行了最小化
真棒! 謝謝
網站主持人對此評論進行了最小化
Genial, excelente, es lo que estaba buscando, muchas gracias, saludos
網站主持人對此評論進行了最小化
Existe una manera de hacer esto pero que la fecha se introduzca sólo si se escribe una palabra específica?
網站主持人對此評論進行了最小化
但是,您如何跟踪多個列的更改? 使用您的示例,您如何編輯腳本以跟踪“產品”和“訂單”列中的更改?
網站主持人對此評論進行了最小化
我們可以更改它以跟踪特定範圍列而不是列的更改嗎? 假設我們要跟踪的列位於工作表的中間?
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護