我试图使用Apps Script API运行Apps脚本功能。我在控制台中设置了脚本,并为该脚本创建了oauth客户端ID。我配置了授权屏幕,并将脚本部署为API可执行文件。我测试了在同一脚本中调用的api函数,但出现404错误:
在此服务器上找不到请求的URL / v1 / scripts / {{my_script_id}}:运行。
响应以HTML形式返回。我还注意到,从API调用该脚本时,该脚本似乎使其具有自己的客户端ID。
我尝试禁用并重新启用了无效的API。我认为调用应用程序不在同一个项目中可能是一个问题,但是由于Google文档尚不清楚,因此我不确定该怎么做。
function trigger(){
var bogus = DriveApp.getRootFolder();
var argument = ["Value0", "Value1", "Value2", "Value3", "Value4", "Value5"];
// https://www.googleapis.com/auth/script.external_request
// https://www.googleapis.com/auth/spreadsheets
var postRequest = {
"Content-Type": "application/json",
"headers": { "Authorization" : "Bearer " + ScriptApp.getOAuthToken()},
"function": "setStatus",
"muteHttpExceptions": true,
"parameters": [argument],
"devMode": false
};
try{
var response = UrlFetchApp.fetch("https://script.googleapis.com/v1/scripts/{{my_script_id}}:run", postRequest);
Logger.log(response);
}catch(err){
Logger.log(err);
}
}
我期望以JSON形式出现某种形式的错误,甚至可能要运行该函数,我得到的是一个HTML文档,该文档显示时显示404错误。
答案 0 :(得分:1)
您不是POST
提出请求。默认的.fetch
方法是GET
。
将其添加到postRequest
对象中:
method: "POST",
您的payload
中也缺少 postRequest
。
var postRequest = {
"method":"POST", //added
"contentType": "application/json", //key changed
"headers": { "Authorization" : "Bearer " + ScriptApp.getOAuthToken()},
"muteHttpExceptions": true,
"payload": JSON.stringify({ //added
"function": "setStatus",
"parameters": argument, //removed []
"devMode": false
})
};