1

フォルダのリストを取得しようとしましたが、php クライアントによって正常に取得されました。しかし、アプリ スクリプトを使用してドキュメントを作成しようとすると、アプリ スクリプト エディターの [実行] アイコンを使用してアプリ スクリプト コードを実行すると、ドキュメントが作成されます。しかし、PHP クライアントを使用してメソッドを実行すると、エラーが表示されます。

キャッチされた例外: POST の呼び出し中にエラーが発生しましたhttps://script.googleapis.com/v1/scripts/..................:run: (401) ScriptError

また、両方のスコープを送信しました:

https://www.googleapis.com/auth/documents https://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');

どうすれば修正できますか?

これが私の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;
}
4

2 に答える 2

1

問題は私のコードにありました。私はリダイレクト URI を使用していましたが、両方のファイルで許可スコープが必要でした。しかし、私は 1 つのファイルだけにアクセス許可スコープを追加しました。そのため、クライアントを要求しているすべてのファイルにアクセス許可を追加してください。

于 2016-01-04T20:33:12.930 に答える