如何使用 php 做简单的 google script api

Tim*_*lee 2 php web-applications google-api google-apps-script google-cloud-platform

我想弄清楚如何通过 php 的 api 调用 google 脚本。这是我的脚本:

function doGet() {
  return ContentService.createTextOutput("hello world!");
}
Run Code Online (Sandbox Code Playgroud)

我可以通过 URL 将其作为 Web 应用程序调用,但我想要完成的任务需要通过 API 调用它。谷歌的文档非常混乱,几乎毫无用处。

这似乎是一项非常简单的任务,但我却一事无成。有谁知道在哪里可以找到简单的分步教程,或者有人可以详细说明完成此任务所需的步骤吗?

更新:所以,我已经放弃了 google API 来访问脚本。我可以使用所有驱动器 api 调用,但似乎无法通过 API 调用我自己的脚本。这是我的最终目标:

用于压缩文件的谷歌脚本:

function doGet(e) {
  var fileIds = [];
// hard code a couple of file id's just for simplicity now.
  fileIds.push('0BzoYw0RgVVOvU0RqdTFrcGdSSzA');
  fileIds.push('0BzoYw0RgVVOvNEJNcWpmSkNxNTA');  
  return ContentService.createTextOutput(zipping(fileIds));
}

function zipping(fileIds) {
  var zipfilename = "sample2.zip";
  var blobs = [];
  var mimeInf = [];
  var accesstoken = ScriptApp.getOAuthToken();
  fileIds.forEach(function(e) {
      try {
          var file = DriveApp.getFileById(e);
          var mime = file.getMimeType();
          var name = file.getName();
      } catch (er) {
          return er
      }
      var blob;
          blob = UrlFetchApp.fetch("https://www.googleapis.com/drive/v3/files/" + e + "?alt=media", {
              method: "GET",
              headers: {"Authorization": "Bearer " + accesstoken},
              muteHttpExceptions: true
          }).getBlob().setName(name);
      blobs.push(blob);
  });
  var zip = Utilities.zip(blobs, zipfilename);
  return DriveApp.createFile(zip).getId(); // return the file id of the new zip file.
}
Run Code Online (Sandbox Code Playgroud)

发布 -> 部署为 Web 应用程序...

选择“新建”

选择“我”

选择“只有我自己”

单击“部署”并根据请求授权访问。

从命令行使用curl 调用Web 应用程序进行测试:

curl -L https://script.google.com/macros/u/0/s/### script id ###/exec
Run Code Online (Sandbox Code Playgroud)

获取包含错误的 html:“抱歉,此时无法打开文件。”

更改权限,以便任何人都可以执行该应用程序。

同样的错误。即使以同一用户身份在浏览器中输入 url 也会出现相同的错误。

此时我想我必须承认失败并寻找Google以外的解决方案。

------------------ 更新 2 --------------------

显然错误是:

“抱歉,目前无法打开文件。请检查地址并重试。”

我认为这是谷歌的一些奇怪问题。相同的脚本在某些帐户中有效,但在其他帐户中无效。我通过搜索网络看到,其他人随机出现此错误,并且没有明确的解决方案。如果有人知道,请告诉我。

----------------- 更新 3 --------------------

这个错误对于谷歌来说是一个奇怪的问题。显然,某些帐户中的新脚本直到第二天才会出现此错误。我已经多次验证了这一点,因此如果您遇到这种情况,请等待一天并再次尝试执行。好处是,在 Google 最终能够“打开文件”之后,您可以进行任何所需的更改,包括该项目的其他脚本文件,并且它会立即更新。

但是,新项目必须等到第二天,因此请提前一天预先创建您认为可能需要的任何项目以及额外的项目。

Tan*_*ike 5

这个示例脚本怎么样?当您部署 Web 应用程序时,请复制并粘贴 URL。请使用它来$url执行以下脚本。

如何部署 Web 应用程序。

  • 在脚本编辑器上
    • 文件
    • -> 管理版本
    • -> 保存新版本
    • 发布
    • -> 部署为 Web 应用程序
    • ->“项目版本:”是最新版本或创建为新版本。
    • -> 在“执行应用程序”处,选择“您的帐户”
    • -> 在“谁有权访问该应用程序”处,选择“任何人,甚至匿名”
    • -> 单击“部署”
    • -> 复制“当前网络应用程序 URL”
    • -> 单击“确定”

示例脚本:

<?php
$url = 'https://script.google.com/macros/s/#####/exec';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($curl);
echo $response;
curl_close($curl);
?>
Run Code Online (Sandbox Code Playgroud)

结果 :

hello world!
Run Code Online (Sandbox Code Playgroud)

参考 :

如果我误解了你的问题,我很抱歉。