【问题标题】:Outputting Last Saved Date/Time to a Particular Cell in Google Sheets将上次保存的日期/时间输出到 Google 表格中的特定单元格
【发布时间】:2015-04-22 00:39:47
【问题描述】:

我正在尝试将上次保存 Google 表格的日期和时间输出到特定单元格(例如 M38)。我有这个脚本,每次保存电子表格时都会自动更新,但它会在最后一行更新。我不知道如何让它出现在特定的单元格中。

function onEdit() {
  var thisSheet = SpreadsheetApp.getActiveSheet();
  var theLastRow = thisSheet.getLastRow();
  var newRowRange = thisSheet.getRange(theLastRow+1,1);
  var theDateTime = new Date();
  newRowRange.setValue(theDateTime.toLocaleString());
};

有什么想法吗?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    尝试:

    function onEdit(e) {
    e.source.getActiveSheet()
        .getRange('M38')
        .setValue(new Date()
            .toLocaleString())
    }
    

    请注意,这将在每张工作表的单元格 M38(更改为您喜欢的任何单元格)中输出日期(和时间)。如果这不是您想要的,您将不得不检查脚本中活动工作表的名称。

    UPDATE:基于OP的cmets,对代码稍作改动以满足新的要求:

    function onEdit(e) {
    var d = new Date()
    e.source.getActiveSheet()
    .getRange('M37')
    .setValue('Last Modified:\n' +d
        .toLocaleDateString() + '\n' + d.getHours() + ':' + d.getMinutes())
    }
    

    【讨论】:

    • 当我尝试这个时,我收到以下错误:“TypeError: Cannot read property "source" from undefined. (line 4, file "Code")"。不知道这到底是什么意思。
    • 您可能是从脚本编辑器运行它的?然后错误是正常的:这是一个 ONEDIT 脚本:它注册了一个放置在电子表格中的事件。如果您在脚本编辑器中,则不会在电子表格中进行任何编辑。因此,事件对象 (e) 的所有参数将未定义。只需编辑工作表,看看日期是否放在单元格 M38 中。
    • 啊,是的!那行得通。谢谢JPV!那么是否可以在上面添加一行“上次修改时间:”?最后一个问题,你知道分割日期和时间的任何方法吗? IE。最后修改的行将是第一行,然后是下一行的日期,然后是下一行的时间。感谢您的所有帮助!
    • 点赞:M37:“上次修改时间:”M38:日期 M39:时间?
    • 是的,这正是我想要的。
    【解决方案2】:

    警告,重要的是:onEdit() 解决方案显然对撤消/重做行为有副作用。也许值得将这一点告知您的用户。

    致谢及更多信息: https://itectec.com/webapp/google-sheets-how-to-show-last-edited-date-and-user-on-google-sheets/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2013-07-09
    • 2022-09-23
    相关资源
    最近更新 更多