javascript - 从 gmail 中获取 html 表并使用 google apps 脚本放入 google 表格中

标签 javascript html excel google-apps-script google-sheets

我是谷歌应用程序脚本的新手。我正在尝试编写一个 Google Apps 脚本,该脚本将从 Gmail 中获取表格并将数据放入 Google Sheets 中。

电子邮件正文有点像以下

CONFIRMATION CODE        GUEST'S NAME    GUEST'S EMAIL    GUEST'S PHONE
      A1                   Name          someone@gmail      012377777

到目前为止,我已尝试使用以下代码来获取电子邮件中的数据并将其推送到电子表格。

function myFunction() {

  var ss = SpreadsheetApp.getActiveSheet();

  var label = GmailApp.getUserLabelByName("[Gmail]/test");
  var threads = label.getThreads();

  for (var i=0; i<threads.length; i++)
  {
    var messages = threads[i].getMessages();

    for (var j=0; j<messages.length; j++)
    {
      var msg = messages[j].getBody();
      var sub = messages[j].getSubject();
      var dat = messages[j].getDate();

      //ss.appendRow([msg, sub, dat])
    }
     // threads[i].removeLabel(label);
  }
  
  }

messages[j].getBody() 给我以下 html

<u></u>


    

<div>
<table cellpadding="3" style="font-size:.9em">
    <thead>
    
    <tr>
        
            <th>CONFIRMATION CODE</th>
        
            <th>GUEST&#39;S NAME</th>
        
            <th>GUEST&#39;S EMAIL</th>
        
            <th>GUEST&#39;S PHONE</th>
        
    </tr>
    </thead>
    <tbody>
    
    <tr>
        
        <td>
            
            A1
            
        </td>
        
        <td>
            
            Name
            
        </td>
        
        <td>
            
            someone@gmail 
            
        </td>
        
        <td>
            
            012377777
            
        </td>
        
    </tr>
    
    </tbody>
</table>
</div>

接下来我尝试使用以下内容来解析它

  var msg = threads[0].getMessages();
       
var rows = Xml.parse(msg[0].getBody(),true).getElement()
          .getElement("div")
          .getElement("table")
          .getElement("tbody")
          .getElements("tr");
  

但这引发了错误“TypeError:无法调用 null 的方法“getElement”。”我对 XML 没有太多经验,所以请您告诉我我在这里做错了什么。 谢谢:)

最佳答案

看起来您正在调用 .getElement() ,但没有指定您希望它获取的元素。查看文档,XmlService 似乎是 api 的当前实现,因此您可能希望使用为其提供的函数,而不是 XML 对象中已弃用的版本。 https://developers.google.com/apps-script/reference/xml-service/

看起来你可以做一些类似的事情:

 var document = XmlService.parse(xml);
 var content = document.getAllContent();

它将返回一个元素数组。

关于javascript - 从 gmail 中获取 html 表并使用 google apps 脚本放入 google 表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38980196/

相关文章:

javascript - 在javascript中给定年份,周数和天数获取一周中的第一个日期

javascript - Ember - 将数据从服务器检索到 View ?

html - 使用 css 选择具有不同 UL 类的第二个元素

php - CodeIgniter 中的 CSS 文件问题

excel - 如何在Excel VBA中将字典设置为字典值?

excel - 在VBA中修改现有的excel连接名称

javascript - 处理 Promise 对象中的错误结果的正确方法是什么?

javascript - PHP 数组到 javascript 数组 UTF-8

javascript - 调整图像特定区域的大小

vba - Excel 中的 SaveAs FileFormat 参数不依赖于版本