Дубликат листа с защищенными диапазонами и переименование их в дату - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над динамическим Google Sheet, который я обновлял вручную, но решил, что должен быть способ его автоматизации. Документ представляет собой расписание для транспортного агентства скорой помощи, на каждой вкладке которого указаны разные даты. Например, первая вкладка листа будет называться «Четверг, 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 устанавливается как дата, отформатированная как «15 ноября 2018 года», и сценарий, который очищает введенный текст, автоматически переадресует дату в A1 через 2 недели, изменяя ее на «29 ноября 2018 года» в этом случае , Этот скрипт показан ниже.

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...