【问题标题】:How to find the last row in column A and print the timestamp by using google apps script?如何使用谷歌应用程序脚本找到 A 列中的最后一行并打印时间戳?
【发布时间】:2021-06-21 20:20:00
【问题描述】:

我想在单击按钮后打印A列最后一行的时间戳,这样我就不需要使用快捷键CTRL + SHIFT + ;来生成时间戳,如下图所示:

这是我的脚本:

function myFunction() {
  const dt = Utilities.formatDate(new Date(), 'Asia/Singapore', 'HH:mm:ss');
  var ss = SpreadsheetApp.getActiveSheet ();
  var direction = SpreadsheetApp.Direction
  var aLast = ss.getRange("A"+(ss.getLastRow()+1)).getNextDataCell(direction.UP).getRow()
  var destRange = ss.getRange(aLast+1,1);

  destRange.setValue(dt)
}

我将功能分配给按钮并运行脚本,但这是显示给我的错误:

我还是谷歌应用脚​​本的新手,我可以知道我的脚本哪里做错了吗?任何建议将不胜感激!

【问题讨论】:

  • 我通过猜测您的情况提出了修改脚本。你能确认一下吗?如果我对您的情况的猜测不正确,我对此深表歉意。那时,您能否提供复制问题的详细信息?借此,我想确认一下。

标签: google-apps-script google-sheets timestamp


【解决方案1】:

在您的情况下,我认为最后一行可能与工作表的底行相同。在这种情况下,就会发生这样的错误。在您的脚本中,当ss.getLastRow()ss.getMaxRows() 的值相同时,我认为会发生错误。如果我的理解是正确的,为了避免这种情况,下面的修改如何?

修改脚本:

function myFunction() {
  const dt = Utilities.formatDate(new Date(), 'Asia/Singapore', 'HH:mm:ss');
  var ss = SpreadsheetApp.getActiveSheet();
  var direction = SpreadsheetApp.Direction

  // I modified below script.
  var lastRow = ss.getLastRow();
  var destRange;
  if (lastRow == ss.getMaxRows()) {
    destRange = ss.getRange("A" + (lastRow + 1));
  } else {
    var aLast = ss.getRange("A" + (lastRow + 1)).getNextDataCell(direction.UP).getRow();
    destRange = ss.getRange(aLast + 1, 1);
  }
  destRange.setValue(dt);
}

参考资料:

【讨论】:

  • 嗨 Tanaike,是的,你是对的!使用您修改后的脚本,它现在可以完美运行。谢谢!
  • @weizer 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2012-06-27
  • 2023-03-14
相关资源
最近更新 更多