【问题标题】:Trigger a function if the number of rows increases - app script如果行数增加,则触发一个函数 - 应用程序脚本
【发布时间】:2022-12-11 18:53:06
【问题描述】:
  • 我想要我的函数 >> sendSlackMessage;仅当工作表中的行数增加时才触发,
  • 我正在使用这里的会员友情提供的代码,

但是,每次代码运行时(每分钟的时间间隔),行数属性都会增加一个错误的数字;例如(将旧行存储为 37.0,而它应该仅为 34.0)

这里可能是什么问题?或者我怎样才能改进这段代码来解决这个问题?

function checkNewRows() {
  var sp = PropertiesService.getScriptProperties();
  var oldRows = sp.getProperty("rows") || 0; 
  var newRows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main").getLastRow();
  if (newRows > oldRows) {
    sp.setProperty("rows", newRows);
    sendSlackMessage();
  } 
}

【问题讨论】:

标签: google-apps-script google-sheets


【解决方案1】:

您显示的代码看起来不错。 rows 属性不告诉数据中的行数,但最后一行号保存数据。只要您始终以相同的方式使用 rows 属性,那应该不会对您获得的结果产生影响。

如果您的 sendSlackMessage() 函数也读取 rows 属性并将其解释为不同于最后一行行号的其他内容,您可能希望使用函数参数来传达最后一行的行号而不是读写属性,像这样:

    sendSlackMessage(newRows);

如果你绝对需要记录数据行数而不是最后一行的行号,你可以使用这样的东西:

function checknumRows() {
  const sheet = SpreadsheetApp.getActive().getSheetByName('Main');
  const props = PropertiesService.getScriptProperties();
  const oldNumRows = props.getProperty('rows') || 0;
  const numRows = sheet.getLastRow() - sheet.getFrozenRows();
  if (numRows > oldNumRows) {
    props.setProperty('rows', numRows);
    sendSlackMessage(numRows);
  }
}

要设置标题行数,请使用查看 > 冻结.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多