【问题标题】:Provisioning new accounts with template data across accounts跨账户使用模板数据供应新账户
【发布时间】:2014-10-01 23:38:13
【问题描述】:

当新用户通过单击我必须在脚本中完成的 URL 接受新帐户的邀请以使用我的程序时:

将模板电子表格中的数据复制到新用户的新电子表格中

有几个条件可以解决: - 要复制的模板电子表格位于管理帐户中 - 用户的网络应用程序配置为使用用户帐户登录,而不是我的管理帐户

我正在为如何在登录用户帐户时读取和复制模板电子表格数据而苦恼?由于 Google Apps 没有用于从其他帐户访问电子表格的可编写脚本的界面。即使用户对模板电子表格具有读取权限。

我考虑过不同的想法,但不确定..我可以将 Web 应用程序链接在一起并在从不同帐户访问的 Web 应用程序之间传递数据吗?或者,除了电子表格和 Google Drive 之外,我是否必须编写一个全新的数据存储?必须可以从管理帐户和用户帐户访问新的数据存储。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    如果您的程序是一个 GAS WebApp,则从您的管理员帐户中使用设置进行部署:

    以以下身份执行应用: me (admin.account@yourdomain.com)

    谁有权访问该应用:任何人

    这样,您的应用的服务器端代码将在管理员帐户下运行,并且可以访问您的模板电子表格,并且已登录的用户将能够与您的应用的客户端进行交互。您可能需要在您的应用中实现一些用户授权,因此只有收到邀请的特定用户才能访问它。例如,您可以将用户的电子邮件地址存储在管理模板电子表格的工作表中,并在为用户创建帐户之前检查当前使用是否在列表中。 Session.getActiveUser().getEmail() 将为您提供当前活动用户的电子邮件地址。同样,您可以检查活动用户是否已创建帐户。

    如果您的程序不是 GAS WebApp - 请编辑您的问题以添加更多相关详细信息。

    【讨论】:

    • 仍然感谢输入,但 Session.getActiveUser().getEmail() 仅在 Web 应用程序设置为“以用户身份执行”时才有效,否则 getEmail() 仅在“以用户身份执行”时返回空白字符串我自己”已设置,我无法分辨用户是谁。
    • 这并不完全正确。 Session.getActiveUser().getEmail() 将在脚本所有者和用户在同一个 Google Apps 域中时返回用户的电子邮件。但是,如果您从通用(非域)Google 帐户(即某人@gmail.com)部署您的应用程序,它将返回一个空字符串。我的印象是您在域帐户中工作,尽管您在问题中没有明确说明。
    • 谢谢,不用担心,我希望互联网上的任何人都能够使用该应用程序...我将使用“以我自己的身份执行”并将其 URL 与电子邮件地址一起传递给用户一个参数,但这将是一个巨大的安全漏洞,因为任何能够欺骗 URL 的人都可以访问管理员和其他用户的数据。我当然想将 GAS 保留为 GUI,但我也在检查后端的 Google Cloud Store。而且,如果您对此有任何想法,仍然需要弄清楚如何从 GAS-UiApp 调用 Google Cloud Store。
    • 在这种情况下,请考虑使用替代数据存储。我喜欢使用Parse.com,但您可以使用几乎任何数据库,只要它可以公开访问(不在防火墙后面),使用JDBC Service。您的服务器端脚本将使用连接设置或 API 密钥与您的数据存储进行交互,因此即使在以“用户访问网络应用”身份执行的应用中也可以工作。
    • 再次感谢..我认为他们可能是目前最好的答案。
    猜你喜欢
    • 1970-01-01
    • 2020-05-17
    • 2020-07-31
    • 2018-12-20
    • 2021-08-13
    • 1970-01-01
    • 2020-06-02
    • 2017-08-30
    • 2016-03-25
    相关资源
    最近更新 更多