【问题标题】:Script to know the edit history of a cell google sheet用于了解单元格 google sheet 的编辑历史的脚本
【发布时间】:2021-07-26 07:38:31
【问题描述】:

我正在与多人一起处理一个文件,我想做一个脚本来告诉我该人如何修改该单元格以及发生这种情况的时间,我只需要进行最后一次更改的电子邮件用户和时间example here,

到目前为止,我得到了这个,这让我得到了电子邮件用户,但没有时间戳。

function history_version() { 
  var thisSS = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet1 = thisSS.getSheetByName('Data'); 
  var specialCell = sheet1.getRange("A1:A5"); 
  Logger.log(htmlEmail = "Cell " + specialCell.getA1Notation() +  " edited by " + Session.getActiveUser().getEmail())

}

感谢时间

【问题讨论】:

  • 使用Date.now() 从纪元获取以毫秒为单位的时间戳。或 new Date().toLocaleString() 将时间戳作为语言环境字符串。
  • 您好 Mohammed,谢谢您的回复,但我需要时间或最后一次修改而不是当前日期,用于控制文件的使用方式
  • 您要将编辑历史记录存储在单独的工作表或列中还是只想记录它?
  • 关于but i will need the time or the last modification not the current date, is for controling how is using the file,我从您的问题中了解到history_version 是由触发器调用的,例如onEditonChange,因此使用new Date() 将返回日期进行了编辑。这不是你想要完成的吗?
  • 我有 10 个具有相同结构的文件,我想知道谁在使用该文件(用户只能在一个单元格中编辑),我将循环到每个文件并询问历史版本该单元格并记录输出。完美的输出将类似于“用户的电子邮件,上次编辑时间”

标签: javascript excel google-apps-script google-sheets


【解决方案1】:

答案:

如果您通过 onEdit 触发器触发函数,而不是从编辑器手动触发,您可以获得实际的 Date 进行了编辑:

function onEdit() {
  var thisSS = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = thisSS.getSheetByName('Data');
  var specialCell = sheet1.getRange("A1:A5");
  var now = new Date();
  Logger.log("Edited by " + Session.getEffectiveUser().getEmail() + " at " + now);
}

注意:

我使用了getEffectiveUser 而不是getActiveUser,因为后者在这种情况下可能不可用(simple trigger)。另一种选择是install the trigger(如果您要访问需要授权的服务,这将是必要的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多