10

Ich versuche, einen Wert auf eine Zelle in einer Google Docs-Tabelle zu setzen.Google Script setValue Berechtigung

function exampleFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var range1 = sheet.getRange("A1"); 
    var value1 = range1.getValue(); 
    value1+=1; 
    range1.setValue(2); 
    return value1; 
} 

Wenn ich diesen Fehler eine Zelle mit dieser Funktion zu beeinflussen bin versucht, erscheint:

Sie haben nicht die Erlaubnis, setValue erforderlich. (Zeile 10, Datei "ddd")

Wissen Sie, wie ich das möglich machen könnte? Ich möchte eigentlich, dass die betroffene Zelle den Wert der Zelle A1 nimmt und den Wert von A1 +1 erhöht.

Danke

+0

Was ist 'range1.setValue (2);' tun soll? Versuchen Sie 1 zu A1 zu addieren und das Ergebnis irgendwo anders zu setzen oder versuchen Sie Zelle A1 zu ändern, indem Sie 1 hinzufügen? Verwenden Sie eine benutzerdefinierte Funktionen, um es aufzurufen, d. H. = ExampleFunction() in einer Zelle? Verstehe nicht. – ScampMichael

+1

Ich stimme Michael zu, es ist nicht klar ... Ich nahm in meiner Antwort an, dass diese Funktion als eine benutzerdefinierte Funktion verwendet wird, da die Fehlermeldung beim Testen als benutzerdefinierte Funktion genau "Sie haben keine Berechtigung dazu call setValue() ... "Auch: die Frage sagt:" die betroffene Zelle "Ich denke, das bedeutet" die Zelle, in die ich die Funktion gestellt habe "? –

Antwort

15

aus der Dokumentation:

Benutzerdefinierte Funktionen Werte zurückgeben, aber sie können keine Werte außerhalb der Zellen setzten sie in sind in den meisten Fällen Zelle A5 eine benutzerdefinierte Funktion in Zelle A1 nicht ändern können. . Wenn jedoch eine benutzerdefinierte Funktion ein Double-Array zurückgibt, überfluten die Ergebnisse die Zelle mit der Funktion und füllen die Zellen unterhalb und rechts neben der Zelle mit der benutzerdefinierten Funktion. Sie können dies mit einer benutzerdefinierten Funktion testen, die return [[1,2], [3,4]]; enthält.

Referenz: Custom Functions in Spreadsheets

+14

Nun, was ist ein Zweck der .setValue() Methode? Das ergibt keinen Sinn. –

+1

Benutzerdefinierte Funktion ist nur ein kleiner Anwendungsfall von Gas –

+0

Also wo sonst verwenden Sie Funktionen von Google Scripts anders als in Skripten? –

1

Es sieht aus, dass Sie die obige Funktion als benutzerdefinierte Funktion, mit anderen Worten verwenden, es durch Zellformel auf dem Google-Sheets UI, auf folgende Weise aufgerufen:

=exampleFunction() 

Custom functions in Google Sheets haben Beschränkungen, so dass sie nicht zum Aufrufen von Google Apps Script-Diensten verwendet werden können, für die Berechtigungen erforderlich sind. Die Abhilfe ist eine andere zu verwenden, bedeutet die Funktion aufrufen:

  • Run aus dem Google Apps Script-Editor
  • Verwenden Sie ein custom menu
  • ein Verwenden trigger

Auch könnten sie aus aufgerufen werden dialogs and sidebars, Google Apps Script Web apps und unter Verwendung der Google Apps Script execution API