Таблицы Google, удаление листов из нескольких таблиц - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь удалить один указанный c лист из нескольких электронных таблиц Google.

У меня есть основная электронная таблица, которая собирает данные из всех других электронных таблиц. Из основной электронной таблицы я могу выполнять различные действия в других электронных таблицах, например добавлять листы, переименовывать листы, скрывать и блокировать листы.

Но не смог удалить листы в других электронных таблицах. Посмотрел в других темах, но не могу ничего найти, чтобы решить это.

Это то, что я получил до сих пор. Он останавливается на этой строке:

"fname.deleteSheet (thisweek);}"

    function DeleteSheet() {

  var sss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = sss.getActiveSheet();

  var range = sheet.getRange("Z1:Z").getValues();
  var filtered_r = range.filter(String).length;    
  var range = SpreadsheetApp.getActiveSheet().getRange('Z2:Z'+filtered_r);
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns();
  for (var i = 1; i <= numRows; i++) {
    for (var j = 1; j <= numCols; j++) {

      //Get current file ID in column Z
      var currentValue = range.getCell(i,j).getValue();

  var currentweekneedstobedefined = SpreadsheetApp.getActiveSheet().getRange(1, 3);
  var thisweek = currentweekneedstobedefined.getValue();
      ss = SpreadsheetApp.openById(currentValue); 
  var dsheet = ss.getSheetByName(thisweek);
     file = ss 
  var fname = file.getName();
  var thisweeksSheet = file.getSheetByName(thisweek);    

    if (dsheet != null) {
    fname.deleteSheet(thisweek);}

 else {

    }
   }
  }
}

Я ценю любую помощь по этому вопросу, поскольку я новичок ie в кодировании.

1 Ответ

1 голос
/ 08 апреля 2020
  • var fname = file.getName(); не возвращает вам экземпляр электронной таблицы, а только его имя

  • Чтобы удалить лист, вам нужен сам экземпляр электронной таблицы: ss

  • Извлечение имени таблицы является излишним

Решение:

Изменить

      ss = SpreadsheetApp.openById(currentValue); 
  var dsheet = ss.getSheetByName(thisweek);
     file = ss 
  var fname = file.getName();
  var thisweeksSheet = file.getSheetByName(thisweek);    

    if (dsheet != null) {
    fname.deleteSheet(thisweek);}

на

  ss = SpreadsheetApp.openById(currentValue); 
  var dsheet = ss.getSheetByName(thisweek);
  if (dsheet != null) {
    ss.deleteSheet(dsheet);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...