Hello有用的脚本,
在我们的寄宿学校,我们目前有一个学生用来登录和退出的Google表格。我创建了一个脚本,每晚复制/粘贴数据列,以创建一个在给定日期登机的记录。
不确定如何使用脚本以这种方式禁用/启用触发器 - 感谢任何建议!
//Menu allowing user to choose to delete previous form submissions
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Clear Out Responses')
.addItem('Clear Form & Responses', 'showAlert')
.addToUi();
}
//Alert box deleting previous form submissions on yes, doing nothing if not
function showAlert() {
var ui = SpreadsheetApp.getUi(); // Same variations.
var result = ui.alert(
'This will clear all previously registered data',
'Are you sure you want to continue?',
ui.ButtonSet.YES_NO);
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
var ui = SpreadsheetApp.getUi();
var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var lastRow = source.getLastRow()
source.deleteRows(2, lastRow)}
var form, urlForm = SpreadsheetApp.getActiveSpreadsheet().getFormUrl();
if (urlForm) {}
form = FormApp.openByUrl(urlForm);
if (form) form.deleteAllResponses();
}
//Trigger running record-keeping function each night
function dailyTrigger() {
ScriptApp.newTrigger('dailyRecord')
.timeBased()
.atHour(22)
.everyDays(1)
.create();
}
//Record-keeping function, copy/value-pasting record into next clear column
function dailyRecord() {
var ss = SpreadsheetApp.getActive()
.getSheetByName('History'),
lastColumn = ss.getLastColumn(),
colE = ss.getRange("C:C")
.getValues();
ss.getRange(1, lastColumn + 1, colE.length, 1)
.setValues(colE);
}
答案 0 :(得分:2)
您是否看过getUserTriggers()
和deleteTrigger
?
getUserTriggers()
,您可以确定调用dailyRecord
的触发器是否已存在。它返回一个触发器列表,您可以使用getHandlerFunction()
检查每个触发器调用的函数。deleteTrigger()
,您可以删除给定的触发器。例如如果您安装了调用dailyRecord
的触发器(并在getUserTriggers()
列表中返回),则可以使用此功能将其删除。使用这些方法,你应该能够达到你想要的效果。
答案 1 :(得分:1)
无法检索现有触发器并重新定义它。例如,无法检索已经运行的基于时间的触发器,并且无法使用代码为其指定新的运行时间。