具有受保护范围的工作表重复,并将其重命名为日期

时间:2018-11-15 06:15:14

标签: google-apps-script google-sheets

我正在处理一个动态的Google表格,该表格一直在手动更新,但认为必须有一种自动化的方式。该文档是救护车运输公司的时间表,每个工作表标签都标有不同的日期。例如,第一个工作表标签将被命名为“ 11月15日,星期四”,依此类推,将产生2周的标签。我需要一个脚本,该脚本删除输入的数据以将其返回到空白计划模板,复制包含保护范围的工作表,并将其重命名为提前2周的日期。我已经有删除数据的脚本,因此我将一排排的代码留给读者。这是我当前正在运行的用于重复工作表的脚本

function duplicateWednesday() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
sheet = ss.getSheetByName('Wednesday');
sheet2 = sheet.copyTo(ss).setName('Wednesday 2'); 
var protections =sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var p = protections[i];
var rangeNotation = p.getRange().getA1Notation();
var p2 = sheet2.getRange(rangeNotation).protect();
p2.setDescription(p.getDescription());
p2.setWarningOnly(p.isWarningOnly());
if (!p.isWarningOnly()) {
  p2.removeEditors(p2.getEditors());
  p2.addEditors(p.getEditors());

我遇到的问题是,这要求工作表标签名称是静态的,但它会根据日期每天更改。有没有办法复制主动选择的工作表,而不用按名称调用工作表?其次,脚本可以读取原始的工作表名称,然后在2周前的相应日期自动命名吗? 如果有帮助,将单元格A1设置为日期,格式为“ 2018年11月15日”,清除输入文本的脚本将自动转发A1中的日期2周,在这种情况下将其更改为“ 2018年11月29日” 。该脚本如下所示。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var First = new Date(ss.getRange('A1').getValue()).getTime();
var dayInMs = 24*60*60*1000
First = First + (14*dayInMs)
ss.getRange('A1').setValue(new Date(First));

0 个答案:

没有答案