我本质上也是在问this post同样的问题。
它来自一个year+之前,它似乎从来没有被回答过。我试着发表评论,询问发帖人是否能够解决这个问题,但我的评论名气有不到50条。
我希望这也有助于让更多的人注意到这个问题。
发布于 2020-09-18 05:00:01
云平台项目不能以编程方式与Apps脚本项目关联。有一个Apps脚本API,它能够对Apps脚本文件做各种事情,但Apps Script API不提供将Apps脚本项目与不同的云项目相关联的方法。这只能手动完成。
Apps脚本API可以做的一些事情:
文件: appsscript.json
Apps脚本项目可以用作不同事情的基础:
Apps脚本文件的行为由清单文件控制。清单文件可配置为web应用程序:https://developers.google.com/apps-script/manifest#webapp
因此,可以对清单文件进行配置,使Apps脚本项目成为Web App,并且Apps脚本API可以更新清单文件。因此,您可以通过编程方式将Apps脚本文件创建为Web App。但是创建Apps脚本文件并通过清单文件将其配置为Web应用程序并不会发布它。
将清单文件配置为将Apps脚本文件定义为Web App后,在部署Apps脚本项目时,会自动将其部署为Web App。
可以通过编程方式部署应用程序脚本文件:https://developers.google.com/apps-script/api/reference/rest/v1/projects.deployments/create
在将项目发布为Web App之前,通过打开Deployment对话框,您可以看到“Deployment”对话框中的更改。将从代码编辑器中打开Deployment对话框。如果您将项目发布为Web App之前和之后的部署对话框内容进行比较,您将看到不同之处。
如果您手动将Apps脚本文件发布为Web App,然后查看"Publish Menu“-> "Deploy From Manifest”对话框,您将看到一个新版本已经创建,并且您将看到一个世界图标。我相信世界图标是Web App部署类型的指示器。
因此,如果您希望完全以编程方式完成此操作,则需要执行多个步骤。
通过使用REST API和UrlFetchApp.fetch(url,options),可以在应用程序脚本项目中使用应用程序脚本API
您不需要使用OAuth库从应用程序脚本中执行此操作。可以通过以下方式获取访问令牌:
var accessTkn = ScriptApp.getOAuthToken()有关更新应用程序脚本文件的内容结构,请参阅:https://developers.google.com/apps-script/api/reference/rest/v1/projects/updateContent#request-body
覆盖现有Apps脚本文件的代码示例如下:
function overWriteAppsScriptFile_(scriptId,content,theAccessTkn) {
try{
var options,payload,response,url;
if (!content) {
throw new Error('failed to pass in content');
return;
}
if (!theAccessTkn) {
theAccessTkn = ScriptApp.getOAuthToken();
}
url = "https://script.googleapis.com/v1/projects/" + scriptId + "/content";
options = {
"method" : "PUT",
"muteHttpExceptions": true,
"headers": {
'Authorization': 'Bearer ' + theAccessTkn
},
"contentType": "application/json",//If the content type is set then you can stringify the payload
"payload": JSON.stringify(content)
};
response = UrlFetchApp.fetch(url,options);
//llz('typeof response 38',typeof response)
//llz('response.getResponseCode() 39',response.getResponseCode())
//llz('response 39',JSON.stringify(response).slice(0,45))
return response;
} catch(e) {
myErrorHandling_(e,'Error updating Apps Script file');
//llz('error',e.message)
//llz('stack',e.stack)
}
};还有一些gcloud命令可用于管理Google Cloud项目。Gcloud命令可以从Google Cloud Shell运行。
https://cloud.google.com/sdk/gcloud/reference/projects
我不知道您是否可以从Google Cloud项目开始,然后将不同的Apps脚本项目与其关联。
https://stackoverflow.com/questions/63944279
复制相似问题