【问题标题】:getMonth problem with Google Sheets javascriptGoogle表格javascript的getMonth问题
【发布时间】:2021-09-26 00:04:16
【问题描述】:

getMonth 不是 Google 表格代码中的函数:

... Logger.log(ss.getSheetByName("Rendimentos").getRange(aportes-cont,3).getValue().getMonth());

while (ss.getSheetByName("Rendimentos").getRange(aportes-cont,3).getValue().getMonth()===numMes){ ... }

Logger.log 行完美运行。它显示所需的月份数。但是第二行显示消息错误:getMonth() is not a function。

同样的代码在 Logger.log 中运行是没有意义的,但会卡在 while 循环中。

我不知道该怎么办。

【问题讨论】:

  • “getMonth() 不是函数” 不是错误消息。完整的错误信息是什么?到目前为止你做了什么调试?了解how to debug small programs
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: javascript google-sheets


【解决方案1】:

当原始单元格包含日期时会发生错误。在这种情况下,.getMonth() 方法尝试根据不是日期的值来确定月份。 尝试用以下代码替换您的代码:

let rangeData = ss.getSheetByName("Rendimentos").getRange('C:C').getValues().flat();    
while (new Date(rangeData[aportes-cont]).getMonth()===numMes){ 
  ... 
}

good practice 也是为了减少脚本访问 google 表格数据的次数 - 所以在建议的代码中,我首先读取整个 column C 的数据一次,然后将结果数据作为元素处理一个数组

【讨论】:

  • 我确实像你说的那样。我阅读了所有的“C”列并使用 flat() 将数组展平,但 while 循环仅在第一次工作。代码如下: var rangeData = ss.getSheetByName("Rendimentos").getRange(1,3,aportes).getValues().flat(); while (new Date(rangeData[aportes-cont]).getMonth()===numMes){ Logger.log(ss.getSheetByName("Rendimentos").getRange(aportes+1-cont,1).getValue()) ;续=续-1;记录器.log(续);执行第一次进入while循环,但第二次没有进入。
  • 与数据和脚本共享工作表的副本 - 那么原因可能会很清楚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多