【问题标题】:Automatically disable a google form at certain point in time using apps script使用应用程序脚本在特定时间点自动禁用谷歌表单
【发布时间】:2023-02-23 20:13:30
【问题描述】:

我有一个谷歌表格,可以在一周内回复,请帮助我使用应用程序脚本如何禁用在每个星期五下午 6 点到星期一上午 9 点无法访问的表格

并且从周一上午 9 点到整周直到周五下午 6 点都可以再次访问。

这应该每周重复一次。

【问题讨论】:

    标签: google-apps-script google-forms


    【解决方案1】:

    我相信你的目标如下。

    • 您想在 09:00 打开您的 Google 表单。
    • 您想在 18:00 关闭您的 Google 表单。
    • 除周六和周日外,您想在这一天运行。

    在你的情况下,我记得这个线程可能会有用。 Ref (Author: me) 但是,在那种情况下,脚本每天都会运行。我认为根据您的预期情况修改此脚本可能有点复杂。所以,我想介绍修改后​​的脚本作为答案。当根据您的情况修改该脚本时,下面的示例脚本怎么样?

    示例脚本:

    请将以下脚本复制并粘贴到您的 Google 表单的脚本编辑器中,然后保存脚本。

    当您使用脚本编辑器运行init()时,会安装一个时间驱动的触发器。此触发器每天自动运行函数installTimeDrivenTrigger()。但是,在这种情况下,脚本由if (["Saturday", "Sunday"].includes(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "EEEE"))) return; 在周六和周日以外的日子运行。并且,当这个函数运行时,start()end()函数被安装为时间驱动的触发器。

    start() 在 09:00 启用 Google 表单。并且,end() 在 18:00 禁用 Google 表单。并且,在第二天之后,installTimeDrivenTrigger() 函数将自动运行。

    const deleteTriggers_ = e => ScriptApp.getScriptTriggers().forEach(t => {
      if (e.includes(t.getHandlerFunction())) ScriptApp.deleteTrigger(t);
    });
    const start = _ => FormApp.getActiveForm().setAcceptingResponses(true);
    const end = _ => FormApp.getActiveForm().setAcceptingResponses(false).setCustomClosedFormMessage("Closed.");
    
    function installTimeDrivenTrigger() {
      if (["Saturday", "Sunday"].includes(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "EEEE"))) return;
      deleteTriggers_(["start", "end"]);
      const time1 = new Date();
      time1.setHours(9, 0, 0);
      const time2 = new Date();
      time2.setHours(18, 0, 0);
      ScriptApp.newTrigger("start").timeBased().at(time1).create();
      ScriptApp.newTrigger("end").timeBased().at(time2).create();
    }
    
    // Please run this script. By this, installTimeDrivenTrigger() is run 00:00 - 01:00 every day.
    function init() {
      deleteTriggers_(["installTimeDrivenTrigger"]);
      ScriptApp.newTrigger("installTimeDrivenTrigger").timeBased().everyDays(1).atHour(0).create();
      // end(); // If you want to close as the default situation, please use this.
    }
    
    • 在此示例中,当用户从 18:00 到 09:00 访问 Google 表单时,“关闭”。显示。如果要更改此消息,请修改上面的脚本。

    笔记:

    • 本次修改,修改函数名时,如果脚本中的函数名没有修改,脚本可能无法使用。请注意这一点。

    参考:

    【讨论】:

    • 谢谢 Tanaike-San,我希望从星期一上午 9 点开始营业,一直营业到星期五下午 6 点。它应该从周五下午 6 点开始关闭,并继续关闭到周一上午 9 点
    • @Alicia Stone 感谢您的回复。例如,在您的情况下,您是否要在周一 18:00 至周二 09:00 期间关闭 Google 表单?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多