2017-01-02 4 views
1

Ich versuche eine benutzerdefinierte Funktion in Google Tabellen auszuführen. Ich habe nicht einen Compiler-Fehler, aber wenn ich versuche, um die Funktion aufzurufen, erhalte ich eine #ERROR zusammen mit einer Nachricht,Google Scripts Fehler: "Sie sind nicht berechtigt, die Sortierung aufzurufen"

You do not have permission to call sort

Gibt es eine Möglichkeit, um dieses Problem zu bekommen? Wie kann ich einen Bereich innerhalb einer benutzerdefinierten Funktion sortieren, wenn range.sort nicht verfügbar ist?

Hier ist mein Code:

function installmentPrice(priceRange, measuringPeriod, lowestDays,  discount) 
{ 
    measuringPeriod = measuringPeriod || 5; 
    lowestDays = lowestDays || 1; 
    discount = discount || 1; 

    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var tempRange = sheet.getRange("C3:C9"); 

    var newRange = tempRange.offset(0,0,measuringPeriod); 
    newRange.sort(newRange.getColumn()); 

    Logger.log(newRange.getValues()); 

    var lowestSum = 0; 
    var installmentPx = 0; 

    for (i=0; i<= lowestDays; i++) { 
     lowestSum = lowestSum + newRange[i]; 
    } 

    lowestSum = lowestSum/lowestDays; 
    installmentPx = discount * lowestSum; 
    return installmentPx; 

} 
+0

Ihr Skript funktioniert in meiner Tabelle. Haben Sie Bearbeitungszugriff auf die Tabelle? Eine Sache, die Sie vielleicht beheben möchten: die Zeile 'var sheet = SpreadsheetApp.getActiveSpreadsheet();' weist der Spalte 'sheet' ein Tabellenkalkulationsobjekt zu, was verwirrend ist (und es unklar macht, auf welchem ​​Blatt die nachfolgenden Operationen ausgeführt werden). Es sollte wahrscheinlich 'var sheet = SpreadsheetApp.getActiveSheet();' – FTP

+0

Versuchen Sie dies: 'sheet.getRange (" C3: C9 "). SetValues ​​(sheet.getRange (" C3: C9 "). GetValues ​​(). Sort ()); 'Hier gehe ich davon aus, dass Sie Werte im C3: C9-Bereich sortieren und in der Tabelle selbst anzeigen möchten. –

Antwort

1

Wie in der documentation angegeben:

A custom function cannot affect cells other than those it returns a value to. In other words, a custom function cannot edit arbitrary cells, only the cells it is called from and their adjacent cells. To edit arbitrary cells, use a custom menu to run a function instead.

Ihre Funktion versucht, eine Reihe unterscheidet sich von der Ursprungszelle zu ändern, die den Fehler Sie auf das bekommen, erklärt newRange Objekt

Verwandte Themen