2016-07-30 18 views
1

Blatt: Liste der Namen Zeile des Benutzers [0] Liste der Zeile Benutzer E-Mails [5]Appscript Google addEdtor (row [5]) permission.value Fehler

führen Sie das Skript aus dieser Linie fein auseinander funktioniert

DriveApp.getFileById('1phsJs4ik2a654645645GOJs4gBVVKd2OmlHtlPk').makeCopy(sheetName,dest).addEditor(owner); 

ERROR: Invalid argument: permission.value (Linie 21, Datei "Code")

funktioniert gut, wenn ich den 'Besitzer' mit ' "[email protected]"' ersetzen, aber ich brauche es durchläuft eine Liste

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

Antwort

1

Es gibt keinen Wert row[5].

An dieser Linie:

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

Die Konfiguration der Parameter des getRange() Sie verwenden ist: getRange(row, column, numRows, numColumns)

, dass Sie ein Array von 5 Elementen [[0, 1, 2, 3, 4]] bekommt, aber sie beziehen sich auf ein Array-Element durch Verweis auf die Indexnummer und Array-Indizes beginnen mit 0.

Sie müssen entweder Ihreändern 0 bis var owner = row[4]; Wenn sich die E-Mail in Ihrer E-Spalte oder var dataRange=sheet.getRange(startRow, 1, numRows, 5) bis var dataRange=sheet.getRange(startRow, 1, numRows, 6) befindet, wenn sich die E-Mail in der Spalte F Ihrer Tabelle befindet.

Vergewissern Sie sich auch, dass die Zelle, die die E-Mail enthält, keine führenden oder nachgestellten Leerzeichen oder ein anderes Sonderzeichen hat.

+0

Das macht vollkommen Sinn und funktioniert, danke! – Haytch

+0

Gerne helfen und willkommen bei Stack Overflow. Wenn diese Antwort Ihr Problem gelöst hat, markieren Sie es als akzeptiert, indem Sie auf das große Häkchen klicken. Auf diese Weise können Personen, die die Frage mit Google finden, mehr Gewissheit haben, dass die Antwort richtig ist. – ocordova

+0

Das ist fertig! Ich hätte das früher gemacht, wenn ich es gewusst hätte. Könntest du meinen anderen Beitrag überprüfen, wenn du etwas Zeit hast? Nochmals vielen Dank Ocordova! – Haytch