将数据从Gmail导入Google电子表格

时间:2015-08-13 17:52:08

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

我每天发送一封电子邮件,我需要将数据从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);
}

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

1 个答案:

答案 0 :(得分:0)

获取数据范围的尺寸如下。 此外,当您在范围上设置值时,二维数组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);