Как сделать функцию QUERY с динамической переменной внутри моего google-apps-script - PullRequest
0 голосов
/ 08 июня 2019

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

В QUERY переменная, которую я ищу, находится в столбце B, и на данный момент я могу ввести ее только вручную \ "Имя исполнителя \". Я пытался использовать различные кавычки и + для вставки динамической переменной вместо имени исполнителя, но после запуска скрипта возвращаются ошибки.

function exampleOfHowItCurrentlyWorks {

  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var setQuery = ss.getSheetByName('printLog').getRange('A1').setFormula('=QUERY(A1:I,"Select A,B Where B Contains \'Artist Name\' ",1)');

}

function exampleOfHowItShouldWork {

  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var artist1 = ss.getSheetByName('theme').getRange('B1').getValue();
  var setQuery = ss.getSheetByName('printLog').getRange('A1').setFormula('=QUERY(A1:I,"Select A,B Where B Contains \'artist1\' ",1)');

}

Основная функциональность заключается в том, что я хотел бы иметь возможность перейти к названию моего листа с названием 'theme' и изменить диапазон 'B1' на Michaelangelo, и запрос вернет результаты, где столбец B содержит Mihchaelangelo…

1 Ответ

0 голосов
/ 08 июня 2019
function exampleOfHowItShouldWork {
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var artist1 = ss.getSheetByName('theme').getRange('B1').getValue();
  var setQuery = ss.getSheetByName('printLog').getRange('A1')
    .setFormula('=QUERY(A1:I,"Select A,B Where B Contains \'' + artist1 + '\' ",1)');
}

Закройте строку неэкранированной одинарной кавычкой и используйте + для объединения строк вместе.

В зависимости от того, почему вы это делаете (например, если вы просто хотите, чтобы B1 был «окном поиска», в которое вы будете вводить имя), может быть проще сделать это через «Листы» без приложений.Сценарий:

=QUERY(A1:I, "Select A, B Where B contains '" & B1 & "'", 1)

Доступ к другим листам можно получить, например, 'theme'!B1.

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