У меня есть формула на листе A, использующая новые листы google, которые отлично работают; он содержит функцию запроса, которая фильтрует даты на основе значений в листе B («Настройки») и данных на листе C («Данные»). Рабочая формула:Исправить ошибку из использования .setValue или .SetFormula для установки формулы, содержащей функцию запроса, которая имеет несколько одиночных и двойных кавычек.
=QUERY(Data!A1:G,"select G, sum(E) where F is not null AND toDate(D)>= date '" & text('Settings'!B5, "yyyy-MM-dd")&"' and toDate(D)<= date '" & text('Settings'!B6, "yyyy-MM-dd")&"'group by G pivot B label G'Pivot table for data in range'")
Проблема заключается в том, что я хотел бы установить эту формулу со скриптом, используя методы диапазона .setFormula
или .setValue
, но у меня возникают проблемы с формулой строки.
Эти методы будут принимать одинарные или двойные кавычки, обернутые вокруг формулы/значения. Итак, если вы используете одинарные кавычки для упаковки своей формулы, вы можете избежать большинства проблем с двойными кавычками в ваших формулах. Кроме того, вы можете строить строками запроса, такие как
formula = 'part of formula'+'another part of formula';
range.setFormula(formula);
Покушения решения было обернуть мою формулу в наборе командах с одинарными кавычками И всякий раз, когда он наткнулся на самопроизвольном закрытие одинарной кавычки, что случается в рабочей формуле , Я вставил перед этим преднамеренную закрывающую одинарную цитату с знаком +, как то, что здесь находится в скобках ('+). Со мной до сих пор? Надеюсь, я прояснился. Чтобы это изменение выглядело так. Во-первых, формула работает в листах:
=QUERY(Data!A1:G,"select G, sum(E) where F is not null AND toDate(D)>= date '" & text('Settings'!B5, "yyyy-MM-dd")&"' and toDate(D)<= date '" & text('Settings'!B6, "yyyy-MM-dd")&"'group by G pivot B label G'Pivot table for data in range'")
Теперь, попытка установить в сценарии:
range.setFormula('=QUERY(Data!A1:G,"select G, sum(E) where F is not null AND toDate(D)>= date '+'" & text('+'Settings'+'!B5, "yyyy-MM-dd")&"'+' and toDate(D)<= date '+'" & text('+'Settings'+'!B6, "yyyy-MM-dd")&"'+'group by G pivot B label G'+'Pivot table for data in range'+'")');
Результат: формула написана и таблица показывает ошибка: ошибка синтаксического анализа формулы. Я уверен, что должен быть способ указать, когда мне нужна одна цитата как часть строки, а не рассматривать некоторые мои одиночные кавычки в качестве маркеров следующего запуска строки, если это имеет смысл. Помогите оценить, я опубликую, когда выясню это.