javascript - 如何使用sheets.AppendRow?我在所有单元格中不断收到错误 [Ljava.lang.Object;@29080d11

标签 javascript regex google-apps-script google-sheets

我正在检索电子邮件正文并将其插入到 Google 表格中。不断收到 [Ljava.lang.Object;@29080d11 错误。我已经很好地检索了数据。我在构建数组以附加到谷歌表格时遇到了一些问题。这是我的代码;

function processInboxToSheet() {
  // var label = GmailApp.getUserLabelByName("NEWNOPS");
  var label = 'Inbox';
  var threads = GmailApp.search('subject:"New Quality Test Results"');
  // var threads = label.getThreads();
  // Set destination sheet
  var sheet = SpreadsheetApp.getActiveSheet();
  // Get all emails with subject  
  for (var i = 0; i < threads.length; i++) {
      var tmp;
      message = threads[i].getMessages()[0];  // second message in thread
      content = message.getPlainBody();  // remove html markup

      // next three lines cleans the message to just the data

      content = content.substr(content.search("Tank 1"));  // remove beginning of trash 
      var n = content.lastIndexOf("INH");
      content = content.substr(0,(n+14)); // get the body of the wanted data 
      //Logger.log(n);
      content = content.split("\n"); // create array based on newline    
     var data = [];
                  data.push(content[0].match(/[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}/)); //Date
                  data.push(content[1].match("")); //Blank  /\d*\.\d{2}/
                  data.push(content[2].match(/\d*\.?\d{2}/)); //Bfat
                  data.push(content[3].match(/\d*\.\d{2}/)); //Prot
                  data.push(content[4].match(/\d*\.\d{2}/)); //Lact
                  data.push(content[5].match(/\d*\.\d{2}/)); //OS
                  data.push(content[6].match(/\d*,\d{3}/)); //SPC
                  data.push(content[7].match(/\d*\,\d{3}/)); //SCC
                  data.push(content[8].match(/\d{2}/)); //MUN
                  data.push(content[9].match(/-\d.\d{4}/)); //FRZ
                  data.push(content[10].match(/\d{2}/)); //TMP
                  data.push(content[11].match(/\d/)); //INH

        Logger.log(data);      
    if (content) {
     sheet.appendRow(data);
      // if no match); display error
    } // End if

  } // End for loop
};

我的数据;

  Producer       32698-1          Date Of Notice     02/04/2020

       Cow Milker3

      8831 CHAPEL RD
       EASTERN, MD  21664




 Tank 1    Sample Date   02/03/2020   B O

 Bfat      4.09
 Prot      3.11
 Lact     4.720
 OS        5.64
 SPC      1,000
 SCC    100,000
 MUN         12
 FRZ    -0.5420
 TMP         37
 INH          0

最佳答案

问题在于 match 返回一个 Arraynull,因此 data 是一个“数组的数组” “(多维数组)但是 appendRow 需要一个 “简单”数组。

不幸的是,没有“简单的修复”(例如添加一行代码或几个字符)。您应该重新考虑脚本的逻辑,以处理 match 返回 null 的情况,因为它不是要传递到 Google 表格的有效值。

关于javascript - 如何使用sheets.AppendRow?我在所有单元格中不断收到错误 [Ljava.lang.Object;@29080d11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60123045/

相关文章:

javascript - 仅用于相对链接的正则表达式

javascript - 如何修改数组的数组,具体取决于其中的元素是否与另一个数组的数组中的元素匹配?

javascript - 使用cloudflare缓存动态页面

javascript - 停止在表单中发布隐藏的选择字段

javascript - 如何删除字符串中重复的空格?

python - 正则表达式中的条件匹配

oauth - 使用 Google Apps 和 OAuth 创建 Trello 卡片

javascript - 异常 : Document is missing (perhaps it was deleted, 或者您没有读取权限?)

javascript - 当用户使用移动键盘输入内容时,我们可以触发 javascript 函数吗

Javascript - 使用纯递归函数创建包含 FizzBu​​zz 结果的数组