【问题标题】:Google Apps Script Error while creating document using execution API PHP Client使用执行 API PHP 客户端创建文档时出现 Google Apps 脚本错误
【发布时间】:2016-04-01 00:38:33
【问题描述】:

我尝试获取文件夹列表,它被 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');

我该如何解决?

这是我的代码.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;
}

【问题讨论】:

  • 您是如何从 php 客户端调用 App Script 的? (一个有效,一个失败)
  • 谢谢 Gerado.. 我使用两个文件进行授权。两个文件都做了更改。现在工作。
  • 如果您将所做的更改添加为答案会很好,这样其他有相同问题的用户就会知道如何解决它
  • 我已经更新了答案..谢谢。

标签: google-apps-script google-apps-script-api


【解决方案1】:

正如詹姆斯尼古拉斯所说,这个错误是由于缺乏权限范围。 我在扩展 PHP quickstart.php 教程时遇到了同样的错误。当 Google Apps Script 函数被修改和发布时,它应该已经向您指出范围发生了变化。您还需要调整 PHP 中定义的范围。

要查找您需要添加的范围,请转到文件 -> 项目属性,然后单击范围选项卡。

比如我加了https://www.googleapis.com/auth/spreadsheets:

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

一旦你这样做了,你将需要删除 .credentials/script-php-quickstart.json,就像上面评论中所说的那样,这样你的范围就可以正确地重新生成。

【讨论】:

    【解决方案2】:

    问题出在我的代码中。我正在使用重定向 URI,并且两个文件都需要权限范围。 但是我只在一个文件中添加了权限范围。 因此,无论您在何处请求客户端,都可以在所有文件中添加权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      相关资源
      最近更新 更多