首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容器绑定脚本的云平台项目是否可以通过编程方式进行更改?

容器绑定脚本的云平台项目是否可以通过编程方式进行更改?
EN

Stack Overflow用户
提问于 2020-09-18 02:35:22
回答 1查看 53关注 0票数 2

我本质上也是在问this post同样的问题。

它来自一个year+之前,它似乎从来没有被回答过。我试着发表评论,询问发帖人是否能够解决这个问题,但我的评论名气有不到50条。

我希望这也有助于让更多的人注意到这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-09-18 05:00:01

云平台项目不能以编程方式与Apps脚本项目关联。有一个Apps脚本API,它能够对Apps脚本文件做各种事情,但Apps Script API不提供将Apps脚本项目与不同的云项目相关联的方法。这只能手动完成。

Apps脚本API可以做的一些事情:

文件: appsscript.json

Apps脚本项目可以用作不同事情的基础:

  • 插件编辑器插件或G套件
  • A库
  • API Executable
  • Bound to a document (Sheet,Form,Doc,Slides)

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部署类型的指示器。

因此,如果您希望完全以编程方式完成此操作,则需要执行多个步骤。

  • 创建应用程序脚本文件
  • 使用包括appsscript.json文件在内的内容更新应用程序脚本文件
  • 创建新的deployment

通过使用REST API和UrlFetchApp.fetch(url,options),可以在应用程序脚本项目中使用应用程序脚本API

您不需要使用OAuth库从应用程序脚本中执行此操作。可以通过以下方式获取访问令牌:

代码语言:javascript
复制
var accessTkn = ScriptApp.getOAuthToken()

有关更新应用程序脚本文件的内容结构,请参阅:https://developers.google.com/apps-script/api/reference/rest/v1/projects/updateContent#request-body

覆盖现有Apps脚本文件的代码示例如下:

代码语言:javascript
复制
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脚本项目与其关联。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63944279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档