我正在试图弄清楚如何通过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 --------------------
这个错误对谷歌来说是一个古怪的问题。显然,某些帐户中的新脚本会在第二天之前收到此错误。我已经多次验证了这一点,如果发生这种情况,请等一天再尝试执行。好的是,谷歌终于能够打开文件"您可以进行任何所需的更改,包括该项目的其他脚本文件,并立即更新。
但是,一个新项目必须要等到第二天,所以请事先创建您认为可能需要的任何项目,并提前几天再创建一个项目。
答案 0 :(得分:1)
这个示例脚本怎么样?部署Web Apps时,请复制并粘贴URL。请将其用于以下脚本的$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);
?>
hello world!
如果我误解了你的问题,我很抱歉。