Google桌面中Google脚本的每日时间限制

时间:2017-08-05 22:18:22

标签: google-apps-script google-form

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

我不是一个不懂JS的程序员,但对C ++(强制性大学单元)有一点了解。 我试图通过在线研究来调整源代码以满足我的愿望。 这是我在google脚本中的脚本。

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_();
}

1 个答案:

答案 0 :(得分:3)

这个示例脚本怎么样?

流程:

  1. 要启动oc(),请先运行initTrigger()。这样,oc()每天凌晨0点启动。请一开始只运行一次。
    • 运行initTrigger()后,您可以在脚本编辑器上确认此触发器。
  2. 在上午0:00启动oc()时,系统会移除现有的启动openForm()closeForm()的触发器。
  3. 然后,启动openForm()closeForm()的触发器将作为新触发器安装。目前,openForm()closeForm()的触发日期分别为今天上午8:00和下午5:00。
  4. 脚本:

    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_();
    }
    

    如果我误解了你的问题,我很抱歉。