Таблицы Google: формула MID не работает с макросами? - PullRequest
1 голос
/ 13 июля 2020

Я запускаю этот макрос в свои таблицы, но по какой-то причине формула MID возвращает #NAME? но если я сотру одно слово и снова запишу, он вернет правильное число. Я стер начало, чтобы поместиться здесь :)

function iOS() {
  var spreadsheet = SpreadsheetApp.getActive();
[...]
  spreadsheet.getRange('K2').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Página19'), true);
  spreadsheet.getCurrentCell().setFormula('=MID(F2;(SEARCH(":";F2;(SEARCH("af_revenue";F2))))+1;LEN(G2))');
  spreadsheet.getRange('K2').activate();
  spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('K2:L2'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getActiveRange().autoFillToNeighbor(SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getRange('K6').activate();
  spreadsheet.getRange('F:K').activate();
  spreadsheet.getRange('F:K').createFilter();
  spreadsheet.getRange('H1').activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
  .setHiddenValues(['', 'None'])
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(8, criteria);
  spreadsheet.getRange('K32').activate();
  var currentCell = spreadsheet.getCurrentCell();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Valores'), true);
  spreadsheet.getRange('\'Página19\'!K32:K288').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('E16').activate();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
  currentCell.activateAsCurrentCell();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('G2').activate();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getRange('G2:G3247').activate();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.UP).activate();
  currentCell.activateAsCurrentCell();
  spreadsheet.getRange('F2:F3').activate();
  currentCell.activateAsCurrentCell();
  spreadsheet.getRange('H2').activate();
  spreadsheet.getRange('G2:G3248').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('H2').activate();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
  currentCell.activateAsCurrentCell();
  spreadsheet.getRange('H1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

Я думаю, что макрос не запускает функцию, как должно быть, но я не знаю почему. Таким образом, остальные ячейки, в которых я должен работать с числами из формулы, в конце остаются пустыми. Мне нужна эта формула, потому что отчет, который я загружаю каждый день, приносит мне такие числа: «189.097.092.504.234.532 ...», а они мне нужны так: «189,097092505234532 ...» Если есть другая формула, которая подходит то же самое и работает с макросами, это мне очень поможет :)

1 Ответ

1 голос
/ 13 июля 2020

В формуле используйте запятую вместо точки с запятой в качестве разделителя параметров функции

Вышеуказанное, потому что разделители по умолчанию в Google Таблицах (используемые в «фоне»):

  • десятичное: точка (точка)
  • параметры формулы: запятая

Использование разделителя точка с запятой и соответствующее преобразование в то, что "механизм формул" может понять, выполняется веб-браузер.

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