多个用户同时使用电子表格,但一次只能使用一个。该怎么办?

时间:2017-01-03 03:22:35

标签: javascript google-apps-script google-sheets

我使用Session.getEffectiveUser()命令返回工作表中活动用户的结果,但如果其他用户输入同一工作表,则结果将发生冲突。

也就是说,一次只能输入一个。我该怎么做才能防止这种冲突出现?

我认为疯狂的解决方案:如果我同时拥有2个活跃用户,那么这个工作表有没有办法加倍,如果第二个用户离开则删除?

很多! 抱歉我的英语不好!

1 个答案:

答案 0 :(得分:0)

以下是将代码部署为网络应用的步骤,以便不会发生冲突。

  1. 为此,您需要一个前端,您将从当前用户访问网络应用程序中获取输入或其他内容。

  2. 现在,只在您的appscript屏幕中,您可以转到文件 - >新的 - > html文件,并将其命名为index.html或任何你喜欢的。以简单的html格式编码。如果必须,也可以应用javascript。要在外部添加javascript,您可以创建另一个.html文件并在那里编写标记。这些都只是简单的html和javascript。

  3. 现在,我们必须以某种方式将它与我们的应用程序相关联。因此,请在您的appscipt中编写此函数:

    function doGet(e) 
    {
        var template = HtmlService.createTemplateFromFile('Index');  
    
        return template.evaluate()
        .setTitle('YOUR_TITLE')
        .setSandboxMode(HtmlService.SandboxMode.IFRAME);
      }
    
  4. 并在Index.html页面中写下这一行(你可以在<html>标签之外写出来):

    <?!= HtmlService.createHtmlOutputFromFile('JavaScript').getContent(); ?>
    
    1. 现在您的代码已准备好部署为Web应用程序。转到发布 - &gt;部署为Web应用程序...看到您保留了选项&#39; me&#39;在执行应用程序中。此外,您可以在下一个选项中指定谁可以访问您的网络应用程序&#39;谁有权访问此应用程序&#39;。
    2. 点击更新并点击最新代码&#39;运行最新代码用蓝色写的。您还可以记下它的网址,以便将您的网络应用包含在Google网站等中。
    3. 请注意,每次对代码进行新的更改时,都应该始终选择项目版本&#39; new&#39;然后单击“更新”。

      几点提示: 要从javascript调用appscript的函数,您可以这样写:

      google.script.run.withSuccessHandler(FUNCTION_NAME).APPSCRIPT_FUNCTION();
      

      它将做的是,它将异步调用appscript函数,当它成功执行时,将执行名为&#39; FUNCTION_NAME的下一个javascript函数。

      这将如何解决您的问题?

      • 好吧,因为你已经将网络应用程序简化为“我”,任何运行网络应用程序的人都将执行代码,就好像你自己已经执行了代码一样,但与此同时,所有的功能都像Session.getActiveUser()将单独运作。因此,冲突不会发生。 自己尝试一下,你就会解决你的疑惑。如有任何疑问请咨询,社区总是很乐意提供帮助。 :)