Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何通过google应用程序脚本创建access webapp时传递您需要的权限_Google Apps Script_Google Sheets - Fatal编程技术网

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应用部署为
    executeasme
    snd
    谁有权访问Web应用:任何人
  • 您想让用户使用访问令牌访问您的Web应用
如果我的理解是正确的,这次修改怎么样

修改点:
  • 如果您访问自己拥有的Web应用,则可以使用访问令牌进行访问
  • 如果其他用户访问您的Web应用,当将部署Web应用的项目文件共享给用户时,用户可以使用访问令牌进行访问。
    • 如果文件未共享,则会发生此类错误
    • 如果您使用容器绑定脚本,请共享它
    • 如果您使用独立脚本,请共享它
  • 对于访问令牌,
    https://www.googleapis.com/auth/drive
    必须包含在范围中
参考资料:

在Web应用的部署条件下,为了访问Web应用,需要使用访问令牌。因此,将返回登录屏幕。如果您不想使用访问令牌,那么将有权访问web应用的
用户: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应用程序,而无需共享脚本。但在这种情况下,用户需要使用自己的帐户登录到谷歌。