设置范围保护每周基于时间的触发器



我正在尝试编写一个脚本,该脚本将每周保护工作表中的不同范围。我已经弄清楚了每周锁定和触发器来启动它。但是,每周都需要一个新的范围。如果第 1 周是;

var range = sheet.getRange(4, 5, 5, 6);

第 2 周需要;

var range = sheet.getRange(10, 5, 5, 6);

等等。因此,只有我的 Row 输入需要根据触发器处于活动状态的一周进行更改。

完整脚本目前如下:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Multiple'); //INSERT SHEET NAME HERE

function lockRange(row, col){
var range = sheet.getRange(10, 5, 5, 6);
// Create protection object. Set description, anything you like.
var protection = range.protect().setDescription('Date1');
// Ensure the current user is an editor before removing others. Otherwise, if the user's edit
// permission comes from a group, the script will throw an exception upon removing the group.
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
protection.setDomainEdit(false);
}
}

答案:

您可以使用PropertiesService将下周存储在脚本的属性中。

代码修改:

function lockRange(row, col){
var week = PropertiesService.getScriptProperties().getProperty("week");
if (!week) {
week = PropertiesService.getScriptProperties().setProperty("week", 4)
}
else {
week = PropertiesService.getScriptProperties().setProperty("week", parseInt(week) + 6)
}  
week = PropertiesService.getScriptProperties().getProperty("week");
var range = sheet.getRange(parseInt(week), 5, 5, 6);
// continue your code...
}
function clearProperties() {
// run this function ONCE to clear any properties that are being stored in
// the script from testing/previous runs.
PropertiesService.getScriptProperties().deleteAllProperties();
}

引用:

  • 物业服务 |应用脚本 |谷歌开发者
  • 类属性 |应用脚本 |谷歌开发

最新更新