динамический диапазон данных из нескольких вкладок в листе Google с помощью функции QUERY - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь создать пользовательскую функцию, чтобы я мог динамически возвращать все вкладки в электронной таблице для использования в функции QUERY.

Так что в будущем, если я добавлю новую вкладку данных, мне не нужно будет вручную обновлять функцию.

function myFunction() {
  var out = new Array();
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i=0 ; i<sheets.length ; i++) {
    var name = sheets[i].getName();

    if (i !== sheets.length - 1) {

      out.push("'"+sheets[i].getName()+ "'!$A:$F; " ); 
    } else {
      out.push("'"+sheets[i].getName()+ "'!$A:$F " );
    }
  }

  return out;
}

Пример того, как я буду использовать свойпользовательская функция

=query(myFunction(),"select * where Col4 = 'Partner' order by Col1 desc",0)

1 Ответ

1 голос
/ 08 октября 2019
function getMyDataRanges() {
  var out=[];
  var sheets=SpreadsheetApp.getActive().getSheets();
  for(var i=0;i<sheets.length;i++) {
    var sh=sheets[i];
    var name=sh.getName();
    out.push("'" + name + "'!$A:$F"); 
  }
  return '{' + out.join(';') + '}';
}

Я загрузил в ячейку что-то вроде этого;

function loadFormula(sheetName,A1Range) {
  var ss=SpreadsheetApp().getActive();
  var sh=ss.getSheetByName(sheetName);
  var formula=Utilities.formatString('=QUERY(%s,"select * where Col4 = \'Partner\' order by Col1 desc")',getMyDataRanges());
  sh.getRange(A1Range).setFormula(formula);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...