Ссылка на значение ячейки формулы запроса в Google Sheets через скрипт приложения не работает - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь скопировать значение ячейки в другую ячейку с помощью Apps Script. Значение исходной ячейки определяется формулой запроса:

=sum(iferror(query(ExportDrop!$A$2:$AJ,"select AJ where A matches '" & join("|",C$3:C) & "' AND AH = '" & A3 & "'",0),0))

Исходный лист отображает вывод этой формулы запроса успешно и правильно.

При работе в скрипте следующий код выдает ноль ( 0), что отличается от просмотра листа.

cellval = sourceSheet.getRange("B3").getValue();
SpreadsheetApp.getUi().alert(cellval); return;

Я попытался getDisplayValue (), getValue (), getValues ​​() (с соответствующим изменением ссылки на диапазон), используя setActiveRangeSelection (), copyValuesToRange (), copyTo (, {contentsOnly: true}) и т. д. c.

Это ошибка в функции запросов Google Sheet? Мне интересно, потому что то же самое происходит, когда я печатаю в PDF исходный лист, содержащий функцию запроса. Полученный PDF показывает нулевые значения. Так что, похоже, это не проблема с моим сценарием, а скорее проблема с исходным листом. Хорошо работает тестирование "более простого" листа с формулой запроса.

Что я делаю не так?

РЕДАКТИРОВАТЬ:

Вот пример: https://docs.google.com/spreadsheets/d/1eHHV-TJhC_aVNNLspx3suKhrthtcjRfIcZR0dWdTvOI

Попробуйте напечатать Лист2. Первый предварительный просмотр PDF выглядит хорошо, но при открытии PDF после экспорта все значения сумм равны нулю.

1 Ответ

1 голос
/ 06 апреля 2020

ОТВЕТ: Функция запросов к листам Google содержит объявленные функции, которые не работают или не завершены.

Пример: matches запускается локально и никогда на сервере Google, что вызывает проблему desyn c, format boolean не работать на всех.

Обойти: использовать серию OR вместо matches

=sum(iferror(query(Sheet1!$A$2:C,"select C where (A = " &join(" OR A = ",filter(C$1:C,C$1:C<>"")) & ") AND B = '" & A1 & "'",0),0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...