【问题标题】:Daily time limitations from Google Scripts in Google FormsGoogle 表单中的 Google 脚本的每日时间限制
【发布时间】:2017-08-05 22:18:21
【问题描述】:

我已经准备好一个谷歌表单,但我希望设置一个时间限制,以便它每天从早上 8 点(开始接受回复)到下午 5 点(停止接受回复)上线。我设法在这里找到了接近我想要的东西https://www.labnol.org/internet/schedule-google-forms/20707/

我不是一个不懂JS但对C++有一点了解的程序员(大学必修课)。 我试图通过在线研究来根据自己的意愿调整源代码。 这是我在谷歌脚本中的脚本。

function oc() {

  ScriptApp.newTrigger('openForm')
     .timeBased()
     .everyDays(1)
     .atHour(8)
     .create();

  ScriptApp.newTrigger('closeForm')
     .timeBased()
     .everyDays(1)
     .atHour(16)
     .create();
}

function openForm() {
  var form = FormApp.getActiveForm();
  form.setAcceptingResponses(true);
}

function closeForm() {  
  var form = FormApp.getActiveForm();
  form.setAcceptingResponses(false);
  deleteTriggers_();
}

【问题讨论】:

    标签: google-apps-script google-forms


    【解决方案1】:

    这个示例脚本怎么样?

    流程:

    1. 要启动oc(),请首先运行initTrigger()。这样,oc() 每天上午 0:00 启动。请首先运行一次。
      • initTrigger() 运行后,您可以在脚本编辑器上确认此触发器。
    2. oc() 在上午 0:00 启动时,用于启动 openForm()closeForm() 的现有触发器将被删除。
    3. 然后,启动openForm()closeForm() 的触发器作为新触发器安装。此时,openForm()closeForm() 的触发日期分别为今天上午 8:00 和下午 5:00。

    脚本:

    function initTrigger(){
      ScriptApp.newTrigger('oc').timeBased().atHour(0).everyDays(1).create();
    }
    
    function oc() {
      ScriptApp.getProjectTriggers().forEach(function(e){
        if(e.getHandlerFunction() == "openForm" || e.getHandlerFunction() == "closeForm") {
          ScriptApp.deleteTrigger(e)
        }
      });
    
      var time = new Date()
      time.setHours(8);
      time.setMinutes(0);
      ScriptApp.newTrigger("openForm").timeBased().at(time).create();
    
      time.setHours(17);
      time.setMinutes(0);
      ScriptApp.newTrigger("closeForm").timeBased().at(time).create();
    }
    
    function openForm() {
      var form = FormApp.getActiveForm();
      form.setAcceptingResponses(true);
    }
    
    function closeForm() {  
      var form = FormApp.getActiveForm();
      form.setAcceptingResponses(false);
      // deleteTriggers_();
    }
    

    【讨论】:

    • 感谢您的回复。我对您编写和修改的内容有相当多的了解,是的,它回答了我的问题。我已经把它放在脚本上并按照你的要求运行了触发器。
    • @Divshal Sharma 欢迎您。也谢谢你。如果您的问题得到解决,请按接受按钮。其他人也可以确认这个解决方案。 stackoverflow.com/help/accepted-answer
    • 感谢@Tanaike 的解决方案。我正在使用您的脚本和流程。但我观察到我的表格一直处于打开状态。以上不适用于我。
    • @mohitji 关于你的问题,我不得不为我糟糕的英语水平道歉。不幸的是,来自I am using your script and flow. but I observed that my Form is opened all time. The above not working for me. 我无法理解您的情况。这是因为我的英语水平不好。我对此深表歉意。但我愿意支持你。那么,您可以通过包含更多信息来复制问题,将您的问题作为新问题发布吗?借此,我想确认一下。如果您能合作解决您的问题,我很高兴。可以配合吗?
    猜你喜欢
    • 2014-11-16
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多