我正试图通过应用程序脚本API部署应用程序脚本,但在脚本和OAuth游乐场中都不断出现404错误。
脚本:
function createNewFile() {
var options,payload,response,theAccessTkn,url, thisID;
thisID = ScriptApp.getScriptId();
theAccessTkn = ScriptApp.getOAuthToken();
url = "https://script.googleapis.com/v1/projects/"+thisID+"/deployments";
payload = {
"versionNumber": 8,
"manifestFileName": "appscript.json",
"description": "oauthtest"
}
options = {
"method" : "POST",
"muteHttpExceptions": true,
"headers": {
'Authorization': 'Bearer ' + theAccessTkn
},
'contentType': 'application/json',
"payload": JSON.stringify(payload)
};
response = UrlFetchApp.fetch(url,options);
Logger.log(response)
return response;
}
清单文件:
{
"timeZone": "Africa/Johannesburg",
"dependencies": {
},
"webapp": {
"access": "ANYONE_ANONYMOUS",
"executeAs": "USER_DEPLOYING"
},
"exceptionLogging": "STACKDRIVER",
"oauthScopes": ["https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.deployments"]
}
日志错误:
[18-12-17 10:31:10:575 SAST] {
"error": {
"code": 404,
"message": "Requested entity was not found.",
"status": "NOT_FOUND"
}
}
我还需要做一些步骤来部署吗?
可能的问题&解决方案:
- manifestFileName不正确:
appsscript
是目前唯一有效的清单名称 - 版本号不正确:版本号应该是已保存的有效版本号。部署将基于此版本号。要查看可用版本,请参见文件>管理版本
代码段:
payload = {
"versionNumber": 1,
"manifestFileName": "appsscript",
"description": "oauthtest"
}
注意事项:
- 目前,无法直接从api创建新的web应用程序部署
- 所有新部署
projects.deployments.create
默认为execution_api
入口点。目前还没有办法从api中配置入口点 - 如果存在有效的web应用部署,则您仍然可以使用
projects.versions.create
从最新代码创建新版本,并更新最新的web应用程序部署以使用最新版本(projects.deployments.update
(。在这种情况下,web应用程序入口点(如果已经存在(保持不变,但是,如果部署中没有有效入口点,则默认为execution-api/null,即更新
要阅读:
- 部署#create
- 部署#更新
- 部署#入口点
- 第63期冲突