Google电子表格中的“自动更新”列显示了最近的修改日期


37

试图找出一种使第二列自动更新以显示上次更新的时间戳的方法。我意识到该文档显示了最后一次修改的时间戳,但是我们有很多客户端同时访问和调整该文档。所以这个请求被提出了。我承认我还没有完成编码,所以这超出了我的范围。

Myanda发布了一些看起来正确的方法,但是我们不确定如何根据需要实现它:

Google Spreadsheet时间戳?


如果您可以将我们链接到该文档,或者提供您所需要的示例文档,则将有所帮助。我可以相应地修改其他答案,但是我不确定您要问的是什么。您是否只需要一个带有时间戳的更新的单元格即可显示整个电子表格的更新时间?
OnenOnlyWalter

嘿 我们要寻找的是,在第2列中,每当更新各自行中的任何单元格时,每行都会使用时间戳进行更新。很抱歉,由于机密信息,我无法发布该文档。但是它包含21列和60行。这有帮助吗?
RichGonzalez

知道了,让我看一下我的原始代码并回复给您:)
OnenOnlyWalter

非常感谢Onen!
RichGonzalez

Answers:


36

好的,这是我上一个答案中代码的修改版本:

function onEdit(e) {
  // Your sheet params
  var sheetName = "MySheet";
  var dateModifiedColumnIndex = 2;
  var dateModifiedColumnLetter = 'B';

  var range = e.range; // range just edited
  var sheet = range.getSheet();
  if (sheet.getName() !== sheetName) {
    return;
  }

  // If the column isn't our modified date column
  if (range.getColumn() != dateModifiedColumnIndex) { 
    var row = range.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy, hh:mm:ss");
    var dateModifiedRange = sheet.getRange(dateModifiedColumnLetter + row.toString());
    dateModifiedRange.setValue(time);
  };
 };

这样做是抓住任何已更改单元格的行,并将时间戳记分配给该特定行的第二列。

要实施,您所需要做的就是进入电子表格,然后单击Tools> Script Editor。在出现的编辑器页面中,只需将其粘贴到那里。由于这是一个onEdit()功能,因此它无需添加其他任何内容即可工作,只需将其粘贴到编辑器中并保存即可。

对于时间戳,我将格式设置为MM / dd / yy并保留了时间。如果要更改它,则只需更改的使用即可Utilities.formatDate


Onen,这很好用!非常感谢!
RichGonzalez

1
听到那个消息很开心!您能然后用复选标记标记此答案吗:)我想说的是,这样其他人才能知道此解决方案有效,但这也是因为我要点:P
OnenOnlyWalter

会做。绝对可以。一个后续问题。没有什么值得称赞的。更改为PST似乎不会将其更改为太平洋标准时间,但是EST可以工作。java是否将PST读作其他缩写。有没有办法将时间显示为12小时与军事时间?
RichGonzalez

1
时间戳对我不起作用。对我来说,“ 20yy-MM-dd HH:mm”可以代替。我认为 必须是小写字母或它不起作用(除非写这篇文章的时候是一月,啊哈哈哈)。
Riccardo

1
请注意,使用“ DD” .formatDate()将获得“一年中的天”,例如12月31日为365。您可能需要“ dd”。:你可以在这里看到的日期格式值的完整列表docs.oracle.com/javase/7/docs/api/java/text/...
丹·阮


4

我希望可以把它放在这里。下面是对上面函数的修改,但只针对行(第9行)而不是列。弄清楚如何使用列分配非常令人沮丧,但最终变得非常简单。感谢OnenOnlyWalter的原始代码:


function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); // Get spreadsheet name 
    var r = s.getActiveCell(); // store active cell name in current spreadsheet 
  var cell1 = 9 // This is the row I want to put values
  if(r.getRow() != cell1) { // Ignores this row (where I put the dates)
    var column = r.getColumn();  // Get column # from active cell
    var time = new Date(); // Get date and time of last mod
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss"); // Format date and time
    SpreadsheetApp.getActiveSheet().getRange(cell1,column).setValue(time); // put in time in cell
  };
 };

这对我来说似乎很好。感谢您修复@OnenOnlyWalter的第8行错误。
Zlatty

由于用户时钟可能不准确,是否有一种标准的方法来获取服务器端的准确时间戳?

@Sim Google Apps脚本在服务器端运行。您获得的时间是从服务器获得的。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.