Проверка имен листов и выбор допустимых имен листов - PullRequest
0 голосов
/ 16 мая 2019

У меня есть пара электронных таблиц на диске Google, у каждого есть несколько листов, я хочу перебрать их и скопировать определенные диапазоны внутри листов, которые я указывал ранее, в именованном диапазоне.Я могу перебирать файлы, но я могу сверять имена листов с моим списком листов.Я сохранил список требуемых листов в переменной valid, которая считывает из именованного диапазона моей электронной таблицы.Я проверил нижний регистр / верхний регистр, некоторые имена листов являются строковыми, а некоторые - числами.но ничто не ловится моим условием.Я пробовал оба indexOf и includes, есть идеи, что не так?

var App = SpreadsheetApp;
var ss = App.openById("****"); //Destination SS
var sh = ss.getSheetByName("Data");
var files = DriveApp.getFolderById("****").getFiles(); 
var valid = ss.getRangeByName('ValidNames').getValues();

function Loop() {
  while (files.hasNext()){
    var f = files.next();
    if (f == ss.getName())  continue;

    var file = App.openById(f.getId());
    var sheets = file.getSheets();
    for (var i=0 ; i<sheets.length ; i++) {
        var s= sheets[i].getName().toUpperCase();
      if (valid.includes(s)) sh.appendRow([Date.now(),f, s ]);     // Not working? Shows Error 

      if (valid.indexOf(s)> -1) sh.appendRow([Date.now(),f, s ]); // Not Working
   };
 };

Спасибо, М

1 Ответ

1 голос
/ 16 мая 2019

Если это только один столбец, вы можете использовать что-то вроде этого:

var valid = ss.getRangeByName('ValidNames').getValues().map(function(r){return r[0]});

Вот что у меня есть как функция:

 function  myFunction() {
  var ss = SpreadsheetApp.openById('ssid'); //Destination SS
  var sh = ss.getSheetByName("Data");
  var files = DriveApp.getFolderById("****").getFilesByType(MimeType.GOOGLE_SHEETS);//included mimetype
  var valid = ss.getRangeByName('ValidNames').getValues().map(function(r){return r[0]});
  while (files.hasNext()){
    var f=files.next();
    if (f==ss.getName())continue;
    var file=SpreadsheetApp.openById(f.getId());
    var sheets = file.getSheets();
    for (var i=0;i<sheets.length;i++) {
      var s= sheets[i].getName().toUpperCase();
      if (valid.indexOf(s)>-1)sh.appendRow([Date.now(),f, s ]); // Not Working
    }
  }
}

Я также убрал эту функциональную петлю, так как она не имеет смысла для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...