Appscript Google addEdtor(row [5])permission.value错误

时间:2016-07-30 08:33:21

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

表: 用户名称行[0] 用户电子邮件列[5]

运行脚本,除了这一行

之外它还能正常工作
 DriveApp.getFileById('1phsJs4ik2a654645645GOJs4gBVVKd2OmlHtlPk').makeCopy(sheetName,dest).addEditor(owner);

错误:参数无效:permission.value(第21行,文件"代码")

当我更换“拥有者”时,工作正常与'" email@google.com"'但我需要它来遍历列表

完整代码:

// Showing it has been sent.
var Confirmed = "Confirmed";

function DistributeTemplate() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;  // First row of data to process
var specify = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var counter = specify.getRange("A1").getValue(); //HOW MANY TO DO 
var numRows = counter;   // Number of rows to process
 var dataRange=sheet.getRange(startRow, 1, numRows, 5)
 var data = dataRange.getValues();
 var dest = DriveApp.getFolderById('INSERTFOLDERID');
 for (var i = 0; i < data.length; ++i) {
 var row = data[i];
 var sheetName = row[0]   
 var FlexisheetSent = row[2];   
 var owner = row[5];
 Logger.log(owner);
  if (FlexisheetSent != Confirmed) { //Only send once
    //DriveApp.getFolderById(dest).addEditor(owner);
   DriveApp.getFileById('INSERTTEMPLATEIDGOOGLESHEET').makeCopy(sh eetName,dest).addEditor(owner);
   sheet.getRange(startRow + i, 3).setValue(Confirmed);
     // The cell is updated instantly to avoid any issues.
    SpreadsheetApp.flush();
  }
 }
 }

1 个答案:

答案 0 :(得分:1)

没有值row[5]

在这一行:

var dataRange=sheet.getRange(startRow, 1, numRows, 5)

您正在使用的 getRange() 参数的配置为:getRange(row, column, numRows, numColumns)

它会为你提供一个包含5个元素[[0, 1, 2, 3, 4]]的数组,但你可以通过引用索引号引用一个Array元素,而数组索引则以0开头。

如果电子邮件位于您的E栏中,则需要将var owner = row[5];更改为var owner = row[4];;如果电子邮件位于电子表格的F列中,则需要将var dataRange=sheet.getRange(startRow, 1, numRows, 5)更改为var dataRange=sheet.getRange(startRow, 1, numRows, 6)

还要确保拥有电子邮件的单元格没有前导或尾随空格或任何其他特殊字符。