Google Sheets / Apps Script Скопировать формулу в новую строку - PullRequest
2 голосов
/ 24 февраля 2020

все еще довольно плохо знаком с этим. Мне удалось инициировать создание новой строки на отдельной вкладке с помощью флажка. На этой новой вкладке есть столбец с формулами. Когда новая строка создана (выше первой), я хочу формулу в новой строке. Вот что у меня есть:

  if(sheet.getSheetName() == CLIENTS) {
    var checkCell = ss.getActiveCell();
    var checked = checkCell.getValue();
    var clientNameCell = checkCell.offset(0,-8).getValue();
    var clientType = checkCell.offset(0,-7).getValue();
    var sessionChargeCell = checkCell.offset(0, -6).getValue();
    var groupChargeCell = checkCell.offset(0,-5).getValue();
    var softwareFee = checkCell.offset(0,-4).getValue();
    var billFee = checkCell.offset (0,-3).getValue();
    var targetSheet = ss.getSheetByName("Client Billing Projections");
    var lCol = targetSheet.getLastColumn();
    if (checkCell.getColumn() == NEWCLIENTCHECK && checked == true) {
      var target = targetSheet.getRange(2, 1, 1, lCol);
      var formulas = target.getFormulas();
      targetSheet.insertRowBefore(2);
      var newRow = targetSheet.getRange(2,1,2,lCol);
      newRow.setFormulas(formulas);
    }
  }

Я думаю, что я застрял после строки targetSheet.insertRowBefore(2);. Я думаю, что это как-то связано с моим использованием getFormulas и setFormulas, но я действительно не могу обернуться вокруг этого. Здесь нет синтаксической ошибки. Как видите, я собрал значения с моего первого листа (КЛИЕНТЫ); Я собираюсь скопировать его на другую вкладку, но мне нужно скопировать и формулу. Любая помощь приветствуется.

Вот пример таблицы Там уже много рабочего кода. Большая часть того, что вы здесь увидите, скорее всего, между строк 222 - 238. Все остальное пока работает.

1 Ответ

1 голос
/ 26 февраля 2020
  • При запуске сценария новая строка вставляется в строку 2 на листе Client Billing Projections.
  • Вы хотите поместить формулу в столбец «N» при вставленном строка.

Если мое понимание верно, как насчет этой модификации?

Точки модификации:

  • В вашем скрипте формулы извлекаются с помощью var formulas = target.getFormulas() от var target = targetSheet.getRange(2, 1, 1, lCol);. Это двумерный массив, включающий одну строку. И полученные формулы помещаются с использованием newRow.setFormulas(formulas) с var newRow = targetSheet.getRange(2,1,2,lCol). В этом случае formulas имеет двухмерный массив, включающий 2 строки.
    • Я подумал, что причина вашей проблемы может быть в этом.

Модифицированный скрипт:

Когда ваш скрипт модифицируется, пожалуйста, измените следующим образом.

От:
var newRow = targetSheet.getRange(2,1,2,lCol);
До:
var newRow = targetSheet.getRange(2,1,1,lCol);

Ссылка:

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