社区首页 >问答首页 >返回线程和消息的Google应用程序脚本--可能的循环/索引错误--无法读取未定义的属性的“长度”

返回线程和消息的Google应用程序脚本--可能的循环/索引错误--无法读取未定义的属性的“长度”
EN

Stack Overflow用户
提问于 2021-12-22 13:06:25
回答 1查看 170关注 0票数 -2

出于某种原因,我的Google解析我们SCADA系统的每日状态电子邮件,它不再返回lineNumber属性,该属性过去是作为App Try/Catch error对象返回的参数提供的。因此,我很难找到“无法读取未定义的属性‘长度’”错误的来源,这个错误被困住了。我想知道是否有人在使用gmail方面更有经验,可能会发现我错过了一些明显的东西。

该脚本提供了一个关键的链接,我们的SCADA和实时网站张贴实时每日数据,几十年的历史操作数据。因为它处理实时数据并在半夜运行,所以我不需要进行有监督的调试,而且由于错误被困在try/catch中,所以在执行/调试日志中不会自动报告位置。简化的代码块如下所示:

代码语言:javascript
代码运行次数:0
复制
// scan the subject lines of all messages in the inbox -> get daily status reports
  var thread = GmailApp.search('in:Inbox subject:"<<<<search string goes here>>>>"');
  var messages = GmailApp.getMessagesForThreads(thread);
  
// verify that only one qualifying email is available
  if (thread.length != 1 | messages.length != 1) {
    // send warning email to cleanup inbox and process data manually
    errorEmail(inboxError);
    return;
  }
  
// process message  
  for (var i = 0 ; i < messages.length; i++) {
    // verify messages[i] <> null
    if(!messages[i]) return;
    for (var j = 0; j < messages[i].length; j++) {
      // message processing loop
      var subject = messages[i][j].getSubject();
      var body = messages[i][j].getPlainBody();
      ...
    }
  }

这个脚本在解析和发布目标数据方面历来是成功的,但是最近出现了".length“属性错误,并且阻止了脚本”优雅地“完成。我没有进行任何代码更改来触发此错误,并怀疑它可能是由底层脚本引擎中的某些更改引起的。

考虑到错误可能是试图从空对象返回.length属性的结果,我想知道我的i或j消息索引是否被错误地测试了。我知道gmail收件箱中应该只有一个每日状态报告,当i=2和j=1时会发生错误,我猜消息循环在早期的迭代中一定正常工作。

有什么想法吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-12-22 19:34:53

这对我来说很管用:

代码语言:javascript
代码运行次数:0
复制
function myfunck() {
  var thread = GmailApp.search('in:Inbox subject:"Keep In Inbox"');
  var messages = GmailApp.getMessagesForThreads(thread);
  if (thread.length != 1 || messages.length != 1) {
    Logger.log('Email Error');
    return;
  }
  for (var i = 0; i < messages.length; i++) {
    if (!messages[i]) return;
    for (var j = 0; j < messages[i].length; j++) {
      var subject = messages[i][j].getSubject();
      var body = messages[i][j].getPlainBody();
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70455095

复制
相关文章
angularJS配合bootstrap动态加载弹出提示内容
该文章介绍如何使用AngularJS和Bootstrap来动态加载弹出提示内容。文章首先介绍了Bootstrap的弹出提示功能,然后使用AngularJS自定义了一个指令,给任意元素加上了popover属性,并可以根据情况改变popover的content内容。最后,文章使用这个指令实现了一个简单的示例,并返回了相关的HTML代码。
MJ.Zhou
2018/01/04
1.6K0
Django模型最佳实践
正确的模型命名和关系字段命名。 设置适当的related_name属性。 用OneToOneField代替ForeignKeyField(unique=True)。 通过“迁移操作”(migrate)来添加模型。 用NoSQL来应对需要降低范式级别的场景。 如果布尔类型可以为空要使用NullBooleanField。 在模型中放置业务逻辑。 用<ModelName>.DoesNotExists取代ObjectDoesNotExists。 在数据库中不要出现无效数据。 不要对QuerySet调用len()函数
用户8442333
2021/05/20
2.3K0
在Exce中使用带有动态数组公式的切片器
Excel中,有一些特别的函数仅计算可见行,例如SUBTOTAL函数和AGGREGATE函数。本文示例使用SUBTOTAL函数。
fanjy
2023/08/29
5030
在Exce中使用带有动态数组公式的切片器
「PowerBI」使用TabularEditor进行PowerBIDeskTop模型开发最佳实践
虽然大体上都是同一个引擎,但最终的定位的原因PowerBIDeskTop数据模型只是单机版的运行,其运行的方式未能如Sqlserver的完整,所以使用TabularEditor读取到的元数据也有所不同。
Excel催化剂
2021/08/19
8440
「PowerBI」使用TabularEditor进行PowerBIDeskTop模型开发最佳实践
Java 中使用 Collections 的最佳实践
Collections 是 Java 中操作集合类数据结构的工具类。它提供了一系列可以操作 List、Set 和 Map 的静态方法,可以辅助开发人员进行集合的常用操作,如排序、搜索、遍历等。
用户1289394
2023/09/11
3590
Java 中使用 Collections 的最佳实践
Class文件的内容(带有视频解说持续更新)
cn_info_constant_pool[constant_pool_count -1]
@派大星
2023/06/28
1360
Class文件的内容(带有视频解说持续更新)
使用Java开发RESTful API的最佳实践
RESTful API 是目前非常流行的一种 Web 服务架构,使用 Java 开发 RESTful API 涉及到许多最佳实践。
用户1289394
2023/09/15
2760
使用Java开发RESTful API的最佳实践
使用 React&Mobx 的几个最佳实践
Mobx 是我非常喜欢的 React 状态管理库,它非常灵活,同时它的灵活也会给开发带来非常多的问题,因此我们在开发的时候也要遵循一些写法上的最佳实践,使我们的程序达到最好的效果。
ConardLi
2020/11/26
1.4K0
对于安全性和敏捷性,最佳的DevSecOps最佳实践是什么?
DevSecOps旨在将各个方面(即开发,安全性和运营)归为一类,以追求单一目标。DevSecOps的目的是确保从流程开始到维护阶段的开发和运营水平相同。
DevOps云学堂
2021/04/02
6730
Flink 最佳实践:TDSQL Connector 的使用(上)
作者:姚琦,腾讯 CSIG 工程师 本文介绍了如何在 Oceanus 平台使用 tdsql-subscribe-connector [1] ,从 TDSQL-MySQL 订阅任务 [2] 创建,到 Oceanus 作业创建、最终数据验证,实现全流程的操作指导。需要注意的是,本文默认已经创建 TDSQL-MySQL 实例和 Oceanus 集群,并且二者在同一 VPC 下或者不同 VPC 下但网络已经打通。 上述流程图简要说明了使用 tdsql-subscribe-connector 时,整个数据流向情况。
腾讯云大数据
2022/04/22
9260
Flink 最佳实践:TDSQL Connector 的使用(上)
动态模型中嵌入静态模型实践
在之前的动态模型之动态增减【FunTester测试框架】中分享了动态的性能测试模型的实现,后面在实际工作中也是受益匪浅,有文为证动态压测模型让工作更轻松。
FunTester
2022/12/09
2420
bootstrap 多内容页脚
image.png <footer role="contentinfo"> <div class="container"> <div class="row"> <div class="col-sm-4 col-md-2"> <h3>Categories</h3> <ul> <li><a href="#">Shoes</a></li> <
用户5760343
2019/10/14
1.4K0
bootstrap 多内容页脚
PyTorch 最佳实践:模型保存和加载
PyTorch模型保存和加载有两种方法,官方最佳实践指南推荐其中一种,但似乎效果没啥区别。最近做模型量化,遇到一个意外的错误,才理解了最佳实践背后的原理,以及不遵循它可能会遇到什么问题。
McGL
2020/09/21
1.9K0
基于K8s插件版的Jenkins动态节点实践【内含最佳实践】
手动在Jenkins Server上面创建一个Jenkins Agent节点,选择JNLP 类型。然后获取Jenkins Agent与Master连接所需要的JENKINS_AGENT_NAME 和JENKINS_AGENT_SECRET信息。
DevOps云学堂
2022/10/04
1.7K0
基于K8s插件版的Jenkins动态节点实践【内含最佳实践】
关于后台动态模板添加内容的总结 Builder使用
1.后台控制器中ArticleController中加载 formBuilder,listBuilder类;
全栈程序员站长
2022/07/07
5420
关于后台动态模板添加内容的总结 Builder使用
bootstrap 表格插件bootstrap-table的使用
最近找到一款比较好的表格插件bootstrap-table,根据名称我们可以看出是基于bootstrap框架下
tianyawhl
2019/04/04
1.8K0
【自然语言处理】开源 | DYPLOC:使用混合语言模型生成文本的内容动态规划
论文地址: http://arxiv.org/pdf/2106.00791v1.pdf
CNNer
2021/08/06
6920
多云战略的最佳实践
企业推行多云策略可带来各种好处。而采用公共云或混合云的很多企业寻求采用多云策略来避免供应商锁定。还有一些企业希望降低云计算成本,或者希望在人工智能、无服务器计算、增强现实中利用供应商提供的独特功能。多云还可以帮助企业提高可靠性、安全性和合规性。
静一
2018/12/07
8450
点击加载更多

相似问题

动态内容的最佳实践

61

动态内容的iOS最佳实践

23

许多带有相同标志的rails模型。最佳实践是什么?

30

动态更新TextBlock内容的最佳实践

21

jQuery加载/动态内容最佳实践

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文