Сохранение / копирование формулы, чтобы при каждом добавлении нового ответа он автоматически применял скрипт Google Apps - PullRequest
0 голосов
/ 02 октября 2018

У меня есть лист, где у меня есть столбцы, где я применил определенную формулу для расчета значения ячейки в столбце.Он связан с ответом электронной таблицы Google. При добавлении нового ответа в строку вводятся данные.Я попытался поработать над сценарием, чтобы при каждом вводе новой записи автоматически копировалась формула из приведенной выше строки, чтобы мне не нужно было перетаскивать ее вниз.

У меня есть столбцы как

A |Б |C |Д

23 |22 |45 |1

В столбце CI я пытаюсь добавить A и B, а в DI вычесть значения.

Я использовал следующий код для копирования формулы.Но это не работает.Это в основном копирование тех же значений, что и в приведенной выше строке.Может кто-нибудь помочь мне разобраться в ошибке и исправить код, чтобы получить правильный вывод.

Спасибо

   var ss = SpreadsheetApp.getActive();

   function onOpen() {
   var menu = [{name:"Insert New Record", 
   functionName:"insertRecord"}];
   ss.addMenu("Options", menu);
   }
   function insertRecord() {

   var sh = ss.getActiveSheet();                  
   var lRow = sh.getLastRow();                    
   var lCol = sh.getLastColumn();                 

   var range = sh.getRange(lRow,1,1,lCol);        
   var formulas = range.getFormulas();           

  sh.insertRowsBefore(lRow, 1);                 

  var newRange = sh.getRange(lRow, 1, 1, lCol);  
  range.copyTo(newRange);                        

  newRange.setFormulas(formulas);                
  }

1 Ответ

0 голосов
/ 02 октября 2018

Попробуйте закомментировать строку range.copyTo(newRange); с помощью // примерно так:

//range.copyTo(newRange);

Эта строка копирует данные из диапазона a в диапазон b.

Затем вы копируете формулы из диапазона a в диапазон b.

Вам не нужно копировать данные, если вы сразу заменяете их формулой.

Если для этого нетэффект, попробуйте использовать .getFormula и .setFormula вместо .getFormulas и .setFormulas..getFormulas будет обрабатывать данные как совершенно другой набор данных, равный .getFormula, прочитайте документацию здесь: https://developers.google.com/apps-script/reference/spreadsheet/range#getformula

Короче говоря, .getFormula - это строка, которую в качестве .getFormulas сохраняют как двумерный массив, содержащий строки.

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