Google apps script 如何通过google应用程序脚本创建access webapp时传递您需要的权限
我有两个谷歌应用程序脚本,如下所示:Google apps script 如何通过google应用程序脚本创建access webapp时传递您需要的权限,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有两个谷歌应用程序脚本,如下所示: 脚本A: 这是一个网络应用程序。我像使用web api一样使用它。根据参数,我将返回从电子表格中读取的数据,只有我可以访问,并且我将在此电子表格中添加或编辑数据 我用以下选项发布了它: 像我一样执行 谁有权访问web应用程序:任何人 脚本B:(在电子表格中) 我将此电子表格用作输入表单。我将请求编写一个by UrlFetchApp函数的脚本 问题是: 当我使用UrlFetchApp函数时,响应内容是类似下图的html。我认为这是一个请求访问对话框,它将
脚本A: 这是一个网络应用程序。我像使用web api一样使用它。根据参数,我将返回从电子表格中读取的数据,只有我可以访问,并且我将在此电子表格中添加或编辑数据 我用以下选项发布了它: 像我一样执行 谁有权访问web应用程序:任何人
脚本B:(在电子表格中) 我将此电子表格用作输入表单。我将请求编写一个by UrlFetchApp函数的脚本
问题是: 当我使用UrlFetchApp函数时,响应内容是类似下图的html。我认为这是一个请求访问对话框,它将向所有者发送请求邮件。我尝试共享脚本B项目来测试用户。它很好用。但我想显示html对话框,并为测试用户正常发送邮件做一些事情
问题: 如何在电子表格B的对话框中显示此html内容 如果有另一种方式,我不能分享脚本一个项目给另一个,请告诉我!因为当我分享给他们时,他们可以看到我的脚本A 我使用ScriptApp.getOAuthToken验证了webapp,如下所示:
函数requestAPI(请求\参数\字符串){
变量参数={
方法:“获取”,
标题:{“授权”:“承载者”+ScriptApp.getOAuthToken()},
以下重定向:正确,
muteHttpExceptions:true
};
Logger.log(“运行到此”);
变量url=”https://script.google.com/macros/s/“+api\u id+”/exec?”+请求\u参数\u字符串;
var response=UrlFetchApp.fetch(url,参数);
if(response.getContentText()!=“成功”){
返回响应。getContentText();
}
}
您的情况如下
- Web应用部署为
sndexecuteasme
谁有权访问Web应用:任何人
- 您想让用户使用访问令牌访问您的Web应用
- 如果您访问自己拥有的Web应用,则可以使用访问令牌进行访问
- 如果其他用户访问您的Web应用,当将部署Web应用的项目文件共享给用户时,用户可以使用访问令牌进行访问。
- 如果文件未共享,则会发生此类错误
- 如果您使用容器绑定脚本,请共享它
- 如果您使用独立脚本,请共享它
- 对于访问令牌,
必须包含在范围中https://www.googleapis.com/auth/drive
用户:Anyone
修改为有权访问web应用的用户:Anyone,甚至是匿名用户如何?如果您需要了解如何使用访问令牌,您能否提供脚本“B”的当前脚本?顺便说一下,当您修改Web应用的脚本时,请更新版本并重新部署Web应用。这样,最新的脚本就会反映到Web应用程序中。@Tanaike我已经使用了访问令牌。我将代码添加到问题内容中。我无法使用选项谁有权访问web应用程序:任何人,甚至是匿名者
。这很危险。谢谢你更新你的问题。我贴出了答案。你能确认一下吗?如果这对你的情况没有帮助,请告诉我。我想考虑其他解决方案。谢谢你的解决方案。你的答案是准确的。只有一件事我不想让谁共享Web应用程序,可以看到Web应用程序脚本代码。如果没有解决方案,我想我会使用一个密钥在脚本a和脚本B之间进行验证,并将web应用部署为有权访问web应用的:任何人,即使是匿名的@onlage根据我的经验,从2018年4月11日开始,访问web应用需要共享该项目,当Web应用部署为以我的身份执行时
和谁有权访问Web应用:任何人
。在此之前,它不需要分享。我认为这次更新是由于安全问题。如果您不想共享脚本,我还认为,正如您所想的那样,使用秘钥对部署在任何人(甚至是匿名的的Web应用程序)的方法更好。很抱歉,我对您的情况没有帮助。不,您的解决方案与我的情况不匹配,但您的GitHub站点非常有用。读完后,我确信如果没有共享项目,其他用户无法访问我的web应用程序。非常有用的网站。多谢各位@我很高兴听到你的评论。“我也谢谢你。”现在我想起了一个办法。虽然我不确定这对您的情况是否有用,但如果用户有机会使用浏览器打开Web应用程序的端点,则用户可以直接访问Web应用程序,而无需共享脚本。但在这种情况下,用户需要使用自己的帐户登录到谷歌。