【问题标题】:Import Data from Gmail into Google Spreadsheet将 Gmail 中的数据导入 Google 电子表格
【发布时间】:2015-11-06 19:58:48
【问题描述】:

我每天都会发送一封电子邮件,我需要将数据从 Google 表格中提取出来。我已经阅读了这个并找到了一个适用于其他人的解决方案,但我一直无法让它在我的身上工作。这是我尝试修改的代码:

function menu(e) {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Macros')
  .addItem('parse mail', 'email')
  .addToUi();
 }

function parseMail(body) {
var a=[];
var keystr="First Name     : ,Last Name      : ,Customer ID    : ,Invoice   : ";
var keys=keystr.split(",");
var i,p,r;
for (i in keys)  {
p=keys[i]+"\n([a-zA-Z0-9\ \,\.]*)\n";
r=new RegExp(p,"m");
try {a[i]=body.match(p)[1];}
catch (err) {a[i]="no match";}
 }
}

function email() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var threads = GmailApp.search('subject: "Fwd: ARB Subscription*"');
var a=[];
for (var i = 0; i < threads.length; i++) {
var messages = GmailApp.getMessagesForThread(threads[i]);
for (var j = 0; j < messages.length; j++) {
  a[j]=parseMail(messages[j].getPlainBody());
  }
 }
  var nextRow=s.getDataRange().getLastRow()+1;
  var numRows=a.length;
  var numCols=a.length[0];
  s.getRange(nextRow,1,numRows,numCols).setValues(a);
}

我尝试修改代码,但我得到的错误是无法将数组转换为 Object[][] 第 35 行。任何建议将不胜感激

【问题讨论】:

  • 很可能a 不是双精度数组,或者某些长度小于其他数组,请登录a 以确保。

标签: regex google-apps-script google-sheets gmail


【解决方案1】:

获取数据范围的维度如下。 此外,当您在范围上设置值时,二维数组 a 的大小必须与范围的大小匹配。

  var dataRange = s.getDataRange();
  var nextRow = dataRange.getLastRow() + 1;
  var numRows = dataRange.getNumRows();
  var numCols = dataRange.getNumColumns(); 

  s.getRange(nextRow,1,numRows,numCols).setValues(a);

【讨论】:

  • 嘿 Matcheek,我尝试了您在上面输入的代码,但仍然遇到相同的错误:无法将 Array 转换为 Object[][]。 (第 37 行 - 指 s.getRange。任何想法为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多