0

Я изучаю это, но не могу найти подходящее решение. Следующая формула отлично работает на уровне формулы при размещении в ячейке листа. Проблема в том, что я хочу, чтобы формула выполнялась на уровне скрипта. Опции Я в курсе, работает ли скрипт для: (1) set.Formula («= комплексная формула») или (2) переписав всю формулу в качестве сценарияJavascript/Googlescript с использованием set.Formula со сложными формулами

Я новичок в ГАЗ, и объединились с обоими методами. Кажется, что синтаксическая ошибка при использовании опции (1), обычно в виде отсутствующего «)», которую я не могу отлаживать. Вариант использования (2) в настоящее время выше моего уровня мастерства. Любая помощь по любому из этих вариантов была бы весьма признательна.

Вот формула в вопросе:

= ARRAYFORMULA (QUERY ({UI A: G, Год (пользовательский интерфейс A: А), МЕСЯЦ (интерфейс A: А), Текст (UI A: A, «MMMM»), TEXT (UI! A: A, «MMM-YY»), REPLACE (UI! A: A, 1,1000, «GRAND TOTAL»)}, «SELECT * WHERE Col1 НЕ NULL И Col2 IS NOT NULL LABEL Col8 'Год', Col9 'MonthMO #', Col10 'MonthMO', Col11 'MonthMOYR', Col12 "GRAND TOTAL"))

+0

, если это нужно только работать в новых браузерах, вы можете использовать 'set.Formula (\' = сложная формула \ '') синтаксис (обратите внимание на серьезные акценты вместо APOS/цитаты) это позволяет избежать зубочистка проблема. https://en.wikipedia.org/wiki/Leaning_toothpick_syndrome – dandavis

+0

попробовал set.Formula ('= сложная формула') с использованием chrome версии 46.0.2490.80 m. без везения. Редактор сценария возвращает ошибку «незаконный символ» при тестировании. – robazefa

+0

попробовал set.Formula, используя серьезные акценты (по какой-то причине я не могу заставить их отображаться в моем комментарии здесь), используя chrome version 46.0.2490.80 m. без везения. Редактор сценария возвращает ошибку «незаконный символ» при тестировании. – robazefa

ответ

1

Ответ

Формулы не запускаются «на уровне скрипта», поэтому вам придется переписать формулу как функцию Google Apps Script/JavaScript.

Спасаясь формула апострофа в сценариях

В случае, если вы хотите сценарий, чтобы добавить сложную формулу ячейки иметь в виду, что написание сложных формул в одной строке делает труднее отлаживать их. Попробуйте делить формулу на функции и параметры и использовать вкладку, чтобы выровнять их. IMHO предотвращает использование файла \, что делает скрипт нечитаемым (Leaning toothpick syndrome).

Ниже приведена функция onEdit(), которая вставляет сложную формулу в вопрос в ячейку справа от ячейки, где написано «Да». Посмотрите на использование \, чтобы избежать апострофов, используемых во втором параметре функции запроса (select statement).

function onEdit() { 
    var ss = SpreadsheetApp.getActive(); 
    var rng = ss.getActiveRange(); 
    var trg = rng.offset(0, 1); 
    var formula = 
    '=ARRAYFORMULA(' 
     + 'QUERY({' 
      + 'UI!A:G,YEAR(UI!A:A),MONTH(UI!A:A),' 
      + 'TEXT(UI!A:A, "MMMM"), ' 
      + 'TEXT(UI!A:A, "MMM-YY"), ' 
      + 'REPLACE(UI!A:A,1,1000,"GRAND TOTAL")' 
      + '},' 
      + '"SELECT * WHERE Col1 IS NOT NULL AND Col2 IS NOT NULL LABEL Col8 \'Year\', ' 
      + 'Col9 \'MonthMO#\', Col10 \'MonthMO\', Col11 \'MonthMOYR\', ' 
      + 'Col12 \'GRAND TOTAL\'"' 
     + ')' 
    + ')'; 
    if(rng.getValue() == 'Yes') trg.setFormula(formula); 
}