代码从开发控制台运行,但在使用触发器时不运行 - Google App Script

时间:2015-10-09 14:38:06

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

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

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

Google Execution Script

任何人都知道如果我运行该功能它会起作用的原因而不是基于时间的触发器有效吗?

以下是代码:

// 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());
}

1 个答案:

答案 0 :(得分:0)

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

我能说什么?

#rookie #newbstuff