Email 将特定文本从电子邮件复制到电子表格

Email 将特定文本从电子邮件复制到电子表格,email,google-apps-script,Email,Google Apps Script,我每天收到一封电子邮件给我我的支票账户余额。我想使用谷歌应用程序脚本从电子邮件中提取余额,并将其插入我的支票账户电子表格。我是一名编码新手,但到目前为止,我已经了解了如何执行以下操作,从而获得了正确电子邮件的HTML代码日志: function myFunction() { var thread = GmailApp.getUserLabelByName("CHK BAL").getThreads(0,1)[0]; // get first thread in inbox var messa

我每天收到一封电子邮件给我我的支票账户余额。我想使用谷歌应用程序脚本从电子邮件中提取余额,并将其插入我的支票账户电子表格。我是一名编码新手,但到目前为止,我已经了解了如何执行以下操作,从而获得了正确电子邮件的HTML代码日志:

function myFunction() {
 var thread = GmailApp.getUserLabelByName("CHK BAL").getThreads(0,1)[0]; // get first thread in inbox
 var message = thread.getMessages()[0]; // get first message
 Logger.log(message.getBody()); // log contents of the body
}
但是,由于此方法返回电子邮件的HTML代码而不是实际的邮件文本,因此它不包含电子邮件中显示的余额数字

我尝试用getPlainBody替换getBody,但它在日志中返回空值

这里发布的问题与我的问题差不多(),但即使有Mogsdad的回复和有用的链接,我也无法找出哪里出了问题

有人能帮我重定向如何获取电子邮件内容而不是空值吗

(一旦解决了这个问题,我就不能说Mogsdad的另一个回复中的链接非常清楚如何识别货币并将其复制到电子表格中,但当然,我还不能到处玩,因为我甚至无法访问内容。)

谢谢


编辑1

有关如何解析HTML的说明,请参见下面Serge的回答。我使用这些功能从Gmail标签/过滤器中获取最新银行账户余额电子邮件的文本,并将其放入电子表格中的一个单元格中

然后,我可以在相邻的单元格中使用以下等式将其拆分为货币编号:

左(右(A5,LEN(A5)-查找($”,A5)),查找(CHAR(10),右(A5,LEN(A5)-查找($”,A5))-1+0


当然,这对我来说是有效的,因为货币编号前面总是有$(第一个,在我的例子中,文本中只显示$),后面总是跟字符(10)。任何试图应用此公式的人都需要在试图分离的值前后保持类似的一致性。

您可以尝试使用此代码片段从html内容中获取文本。我经常使用它,而且大多数时候都很好用:)(谢谢Corey)

和一个测试函数来尝试它:

function test(){
  var html = GmailApp.getInboxThreads()[0].getMessages()[0].getBody();
  throw(getTextFromHtml(html));
}
至于getPlainBody()返回null的原因,很可能是由于Google应用程序脚本中的错误。该问题已提交至


从该线程中:“似乎受影响的邮件的内容中包含HTML。一种可能的解决方法是使用getBody()而不是getPlainBody(),并直接通过HTML进行解析。”

我不知道你为什么在这个问题上打电话给我,因为我与此无关。我想你需要编辑一下。你能提供你得到的HTML的一个编辑版本吗?看到天平周围的内容和标签会很有帮助。嗨,莫格斯达德,我很抱歉。我在上面贴错了帖子的链接(我的原创)。我已经把它改成了正确的帖子。与此同时,塞奇的回答让我找到了我需要的地方。谢谢你们两位。我有一个不可描述的用户名(不知道注册过程中是如何发生的),但自从我开始使用GAS以来,在过去的两周里,你和Serge都回答了我的几十个问题,都是通过直接回复,也通过许多、许多张贴的回复。谢谢你的帮助!金色的!谢谢,谢尔盖。工作得很漂亮。我可以从电子邮件中获取文本并将其放入手机。从那里我知道了如何使用相邻单元格中的公式来分离货币值。非常感谢你。我的设置现在真的很酷:)对于任何想从一堆文本中分离货币价值的人,我已经编辑了上面的原始帖子。再次谢谢你,谢尔盖!
function test(){
  var html = GmailApp.getInboxThreads()[0].getMessages()[0].getBody();
  throw(getTextFromHtml(html));
}