如何用PHP做简单的谷歌脚本API

时间:2017-11-13 00:51:49

标签: php google-api google-cloud-platform google-oauth2

我正在试图弄清楚如何通过php从api调用谷歌脚本。这是我的剧本:

function doGet() {
  return ContentService.createTextOutput("hello world!");
}

我可以通过它的URL将其称为Web应用程序,但我想要完成的将需要通过API调用它。谷歌的文档令人困惑,几乎无用。

这似乎是一项如此简单的任务,但我无法快速完成任务。有谁知道在哪里可以找到简单的一步一步的教程,还是有人可以详细说明完成此任务所需的步骤?

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

用于压缩文件的Google脚本:

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.
}

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

选择"新"

选择"我"

选择"仅我自己"

点击"部署"并按要求授权访问。

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

curl -L https://script.google.com/macros/u/0/s/### script id ###/exec

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

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

同样的错误。即使在同一个用户输入相同的错误也会在浏览器中输入网址。

此时我认为我必须承认失败并找到除谷歌以外的解决方案。

------------------ UPDATE 2 --------------------

显然是错误:

"抱歉,此时无法打开文件。请检查地址,然后重试。"

我认为这是谷歌的一些古怪问题。相同的脚本适用于某些帐户但不适用于其他帐户。我从搜索网络看到,其他人随机得到这个错误,没有明确的解决方案。如果有人知道,请告诉我。

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

这个错误对谷歌来说是一个古怪的问题。显然,某些帐户中的新脚本会在第二天之前收到此错误。我已经多次验证了这一点,如果发生这种情况,请等一天再尝试执行。好的是,谷歌终于能够打开文件"您可以进行任何所需的更改,包括该项目的其他脚本文件,并立即更新。

但是,一个新项目必须要等到第二天,所以请事先创建您认为可能需要的任何项目,并提前几天再创建一个项目。

1 个答案:

答案 0 :(得分:1)

这个示例脚本怎么样?部署Web Apps时,请复制并粘贴URL。请将其用于以下脚本的$url

如何部署Web应用程序。

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

示例脚本:

<?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);
?>

结果:

hello world!

参考文献:

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