Appscript Google addEdtor(行[5])permission.value错误 [英] Appscript Google addEdtor(row[5]) permission.value error
问题描述
用户名列表[0]
用户电子邮件列表[5]
运行脚本工作正常除此之外
DriveApp.getFileById('1phsJs4ik2a654645645GOJs4gBVVKd2OmlHtlPk')。makeCopy(sheetName,dest) .addEditor(所有者);
错误:无效参数:permission.value(第21行,文件代码)
当我用'email@google.com'替换'所有者'时工作正常,但我需要它通过列表进行迭代
完整代码:
//显示已发送。
var Confirmed =确认;
函数DistributeTemplate(){
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; //第一行数据处理
var指定= SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(Sheet1);
var counter = specify.getRange(A1)。getValue(); //如何做
var numRows = counter; //要处理的行数
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!=确认){//只发送一次
//DriveApp.getFolderById(dest).addEditor(owner);
DriveApp.getFileById('INSERTTEMPLATEIDGOOGLESHEET')。makeCopy(sh eetName,dest).addEditor(owner);
sheet.getRange(startRow + i,3).setValue(Confirmed);
//单元格会立即更新以避免任何问题。
SpreadsheetApp.flush();
没有值 row [5]
。
在这一行:
var dataRange = sheet.getRange(startRow,1,numRows,5)
getRange() : getRange(row,column,numRows,numColumns) code>
给你一个由5个元素组成的数组 [[0,1,2,3,4]]
,但是通过引用索引号引用数组元素,并且数组索引以0开头。
您可能需要更改 var owner = row [5];
to var owner = row [4];
如果电子邮件位于E列或 var dataRange = sheet.getRange(startRow,1,numRows,5) to
var dataRange =工作表。 getRange(startRow,1,numRows,6)
如果电子邮件位于电子表格的F列。
还要确保单元格该电子邮件没有前导空格或尾随空格或任何其他特殊字符。
Sheet: list of user's names row[0] list of user emails row[5]
run the script it works fine apart from this line
DriveApp.getFileById('1phsJs4ik2a654645645GOJs4gBVVKd2OmlHtlPk').makeCopy(sheetName,dest).addEditor(owner);
ERROR: Invalid argument: permission.value (line 21, file "Code")
Works fine when i replace the 'owner' with '"email@google.com"' but i need it to iterate through a list
Full code:
// 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();
}
}
}
There is no value row[5]
.
At this line:
var dataRange=sheet.getRange(startRow, 1, numRows, 5)
The configuration of the parameters of the getRange() you're using is: getRange(row, column, numRows, numColumns)
That gets you an Array of 5 elements [[0, 1, 2, 3, 4]]
, but you refer to an Array element by referring to the index number and Array indexes start with 0.
You either need change your var owner = row[5];
to var owner = row[4];
if the email is in your E column or var dataRange=sheet.getRange(startRow, 1, numRows, 5)
to var dataRange=sheet.getRange(startRow, 1, numRows, 6)
if the email is in the F column of your Spreadsheet.
Also be sure that the cell that has the email doesn't have leading or trailing whitespaces, or any other special character.
这篇关于Appscript Google addEdtor(行[5])permission.value错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!