无法在Google Script Trigger中将[object Object]转换为(class)错误。在当地工作正常

时间:2017-09-05 19:53:59

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

我正在开展一个R& D项目,在那里我阅读了我的电子邮件内容(其中包含服务器相关指标),并将数据发布到Google Spreadsheet以绘制图表。

目前,当我从Google App Script手动运行脚本时,它运行正常,但是当我安排触发器时,它会因错误而失败 - Cannot convert [object Object] to (class)

我的邮件包含以下信息,我阅读并绘制图表:

Date&Time JVM PID CPU MEM FGC
03-09-2017-09-08-PM abc01_xzy01 12345 1.2% 2.75 3
03-09-2017-09-08-PM abc01_xzy01 12345 3.5% 2.71 4
03-09-2017-09-08-PM abc01_xzy01 12345 4.6% 2.79 5

我的代码:

function getGmail(start) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var isubject = "TEST REPORT";
  start = start || 0;
  var threads = GmailApp.getInboxThreads(start, 1);
  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
  for (var j = 0; j < messages.length; j++) {
    var sub = messages[j].getSubject();
    if (sub==isubject){
    var msg=messages[j].getPlainBody();
    var msg=msg.trim()
    }
}
 result1(msg)
  }
function result1(range) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Sheet1")
  var lr=sheet1.getLastRow()
  var output=[]
  var line=range.split(" ")
  for(j=0;j<line.length;j++){
     output.push(line[j].split(" "))
  }
  sheet1.getRange(lr+1, 1, output.length, output[0].length).setValues(output)
 }
}

我在第6行得到错误var threads = GmailApp.getInboxThreads(start, 1);但不确定原因。我在这里检查了各种解决方案,并尝试修改它们(比如应用2D数组,更改setValues格式等),但没有一个有效。

如何确定我的代码在保持触发状态时的行为方式?

1 个答案:

答案 0 :(得分:1)

您无法从触发器向函数传递参数,因此在使用触发器运行时,函数中的start未定义。这就是它在第6行失败的原因。