Ich habe versucht, die Liste der Ordner abzurufen, und sie wurde erfolgreich vom PHP-Client abgerufen. Aber als ich versuchte, ein Dokument mit dem App-Skript zu erstellen, wird das Dokument erstellt, wenn ich den App-Skript-Code mit dem Symbol Ausführen im App-Skript-Editor ausführe. Wenn ich jedoch einen PHP-Client zum Ausführen der Methode verwende, wird ein Fehler angezeigt.

Ausnahmebedingung: Fehler beim Aufrufen von POST https://script.googleapis.com/v1/scripts/..................:run: (401) ScriptError

Auch ich habe beide Bereiche gesendet:

https://www.googleapis.com/auth/documentshttps://www.googleapis.com/auth/drive

$client = new Google_Client();
 $client->setApplicationName("Apps Script Execution");

     $client->setScopes(array('https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/documents','https://www.googleapis.com/auth/drive.file'));
     //$client->setScopes(array('https://www.googleapis.com/auth/drive.file'));
     $client->setAuthConfigFile('client_secrets_app_script.json');

Wie kann ich es reparieren?

Hier ist mein code.gs

/**
 * The function in this script will be called by the Apps Script Execution API.
 */

/**
 * Return the set of folder names contained in the user's root folder as an
 * object (with folder IDs as keys).
 * @return {Object} A set of folder names keyed by folder ID.
 */
function getFoldersUnderRoot() {
  var root = DriveApp.getRootFolder();
  var folders = root.getFolders();
  var folderSet = {};
  while (folders.hasNext()) {
    var folder = folders.next();
    folderSet[folder.getId()] = folder.getName();
  }



  var doc = DocumentApp.create('Naya Doc');
  var body = doc.getBody();
  var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']];
  body.insertParagraph(0, doc.getName())
      .setHeading(DocumentApp.ParagraphHeading.HEADING1);
  table = body.appendTable(rowsData);
  table.getRow(0).editAsText().setBold(true);


  return folderSet;
}
1
James Nicholas 26 Dez. 2015 im 16:44

2 Antworten

Beste Antwort

Problem war in meinem Code. Ich habe den Umleitungs-URI verwendet und der Berechtigungsbereich wurde in beiden Dateien benötigt. Aber ich habe Berechtigungsbereich in nur einer Datei hinzugefügt. Fügen Sie also Berechtigungen in alle Dateien ein, wo immer Sie den Client anfordern.

1
James Nicholas 4 Jän. 2016 im 20:33

Wie James Nicholas sagte, ist dieser Fehler auf mangelnden Berechtigungsbereich zurückzuführen. Ich habe den gleichen Fehler beim Erweitern des PHP-Lernprogramms quickstart.php erhalten. Wenn die Google Apps Script-Funktion geändert und veröffentlicht wird, sollte sie Sie darauf hingewiesen haben, dass sich die Bereiche geändert haben. Sie müssen die definierten Bereiche auch in PHP anpassen.

Um die Bereiche zu finden, die Sie hinzufügen müssen, gehen Sie zu Datei -> Projekteigenschaften und klicken Sie auf die Registerkarte Bereiche.

Zum Beispiel habe ich https://www.googleapis.com/auth/spreadsheets hinzugefügt:

define('SCOPES', implode(' ', array(
  "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets")
));

Sobald Sie dies getan haben, müssen Sie die Datei .credentials / script-php-quickstart.json löschen, wie im obigen Kommentar angegeben, damit die Bereiche ordnungsgemäß neu generiert werden können.

2
user2888854 6 Apr. 2016 im 15:27