【问题标题】:Code runs from the dev console but not when using triggers - Google App Script代码从开发控制台运行,但在使用触发器时不运行 - Google App Script
【发布时间】:2015-10-09 14:38:05
【问题描述】:

我有一个向 Google 表格提交数据的 Google 表单。我已经设置了一个基于时间的事件,以在电子表格中每 10 分钟运行一次 Google App 脚本以进行测试。该脚本获取电子表格中的数据并更新我们 Google Apps 目录中的用户信息(职位等)

现在,当我在开发控制台中测试脚本时,它运行良好。当我调试它时,没有错误。如果我从触发器运行它,我会收到错误:

任何人都知道如果我运行该函数但在基于时间的触发器起作用时它会起作用的原因吗?

代码如下:

// Update user's job title
function updateTitle(userEmail, userTitle, userDept, userLocation) {
  var update = {
    organizations: 
      [{
        name: "Our Org",
        title: userTitle,
        primary: true,
        type: "work",
        department: userDept,
        location: userLocation
      }]
  };
  AdminDirectory.Users.update(update, userEmail); // <-- LINE 14
}

// Get the users email from spreadsheet
function getData(){
  var SS = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = SS.getLastRow();
  var data = SS.getDataRange().getValues();
  for(i = 1; i < data.length; i++){
    var title = data[i][1].toString();
    var email = data[i][2].toString(); 
    var department = data[i][3].toString();
    var location = data[i][4].toString();
    updateTitle(email, title, department, location);
  }
  MailApp.sendEmail('my.email@org.com', 'It ran title update', 'Check it out ' + SpreadsheetApp.getActiveSpreadsheet().getUrl());
}

【问题讨论】:

  • 从触发器运行时没有活动工作表。
  • @Kriggs 正在尝试...
  • @Kriggs 将其更改为 getSheetByName('Data') 并将工作表名称更改为 Data 后,我仍然遇到相同的错误。
  • 您的异常似乎来自 AdminDirectory,我建议在调用显示参数的 AdminDirectory 更新之前从 updateTitle 函数向您自己发送一封电子邮件,也许您收到的电子邮件地址不正确原因?
  • @CameronRoberts 好主意!电子邮件说电子邮件是[object object],我不明白,因为当我从控制台运行它时,它可以工作。

标签: javascript google-apps-script google-admin-sdk


【解决方案1】:

嗯....我发现了问题。当我设置基于时间的触发器时,我没有选择正确的功能。所以,updateTitle 正在运行,而不是 getData

我能说什么?

#rookie#newbstuff

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-28
    • 2018-05-16
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2015-08-26
    相关资源
    最近更新 更多