Я пытаюсь автоматически скрывать листы в гугл листах - PullRequest
0 голосов
/ 19 февраля 2020

Я настроил табели в гугл листах для своих сотрудников. У каждого сотрудника есть свой собственный документ, и каждую неделю в начале периода оплаты я буду создавать новый лист в каждом документе и скрывать лист с предыдущей недели. Новый лист назван по датам этого периода оплаты (т.е. с 12 по 18 февраля). Я пытаюсь написать сценарий, который может сделать это автоматически для меня. Сценарий включает две функции, которые запускаются по временному триггеру. Первая функция работает отлично и каждую неделю в начале периода оплаты создает новый лист с правильными датами в качестве имени листа. Вторая функция скрытия старого листа не работает. У меня триггеры в шахматном порядке, так что новый лист создается за несколько часов до того, как старый будет скрыт. Вот то, что я пытался скрыть старый лист (лист шаблона - это то, что копируется в каждый из документов сотрудника, где B2 - это дата начала периода оплаты, а H2 - конец периода оплаты).

  var ss = SpreadsheetApp.openById('TEMPLATE SHEET ID').getActiveSheet()
  var newName1 = Utilities.formatDate(ss.getRange("B2").getValue(),"CST","MMM dd");
  var newName2 = Utilities.formatDate(ss.getRange("H2").getValue(),"CST","MMM dd");

  var EMPLOYEE = SpreadsheetApp.openById('EMPLOYEE SHEET ID');
  var hideEMPLOYEE = EMPLOYEE.getSheets();
    for(var i =0;i<hideEMPLOYEE.length;i++){
    Logger.log(i);
    if(hideEMPLOYEE[i].getName()!== newName1 + "-" + newName2){
    hideEMPLOYEE[i].hideSheet();
     }
  }

1 Ответ

1 голос
/ 20 февраля 2020

Попробуйте это:

Если B2 или H2 уже являются датами, это нормально, это просто создаст другую дату из них, но если они являются строками, с которыми знаком конструктор, это создаст для них новую дату как хорошо.

  var ss = SpreadsheetApp.openById('TEMPLATE SHEET ID').getActiveSheet()
  var newName1 = Utilities.formatDate(new Date(ss.getRange("B2").getValue()),"CST","MMM dd");
  var newName2 = Utilities.formatDate(new Date(ss.getRange("H2").getValue()),"CST","MMM dd");

  var EMPLOYEE = SpreadsheetApp.openById('EMPLOYEE SHEET ID');
  var hideEMPLOYEE = EMPLOYEE.getSheets();
    for(var i=0;i<hideEMPLOYEE.length;i++){
    Logger.log(i);
    if(hideEMPLOYEE[i].getName()!= newName1 + "-" + newName2){
    hideEMPLOYEE[i].hideSheet();
     }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...