Преобразовать строку в формулу в Google Spreadsheet - PullRequest
2 голосов
/ 12 января 2020

Я более 10 часов читал и пробовал разные варианты, но безуспешно.

У меня есть эта строка (на самом деле это строка, генерируемая другими формулами)

QUERY({IMPORTRANGE(A1;$D$1);IMPORTRANGE(A2;$D$1);IMPORTRANGE(A3;$D$1);IMPORTRANGE(A4;$D$1)};"select Col13, sum(Col1), sum(Col2), sum(Col3), sum(Col4), sum(Col5), sum(Col6), sum(Col7), sum(Col8), sum(Col9), sum(Col10), sum(Col11), sum(Col12) group by Col13";0)

И я хочу, чтобы это читалось как формула. Так, например, я пробую эту функцию:

function doConvert(formula) {
  // Strip leading "=" if there
  if (formula.charAt(0) === '=') formula = formula.substring(1);
  return eval(formula);
}

Но я получаю:

Ошибка / SyntaxError: Falta ":" detrás del ID de propiedad.

(В Engli sh будет означать: ":" отсутствует после идентификатора свойства.

Любое другое решение будет замечательно.

Ответы [ 2 ]

1 голос
/ 12 января 2020

Формулы Google Sheets нельзя оценить по коду сервера / клиента, только по интерфейсу Google Sheets.

Если вы хотите, чтобы ваша строка передавалась в виде формулы в ячейку, используйте setFormula(formula) метод из диапазона классов

ПРИМЕЧАНИЕ: нет необходимости предварительно добавлять знак равенства к формуле.

Пример

Предполагая, что строка формулы находится в A1 и что вы хотите указать в виде формулы в B1

function setFormula(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var source= sheet.getRange('A1');
  var formula = source.getValue();
  var target = sheet.getRange('B1');
  target.setFormula(formula);
}

Related

1 голос
/ 12 января 2020

добавьте = к вашей сгенерированной строке и попробуйте так:

function onEdit() { 
var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet_Name_Here');  
var src = sheet.getRange("A1");              // The cell which holds the formula
var str = src.getValue(); 
var cell = sheet.getRange("C5");             // The cell where you want the results to be in
cell.setFormula(str);              
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...