Скопируйте формулу в диапазон. Таблица Google

В настоящее время у меня есть этот сценарий:

function addConsultant()
{
var sheet_staffing = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Staffing"); 
var sheet_parametres = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Parametres");
var range_tabConsultant_default = sheet_parametres.getRange(26,1,6,64);
var row_position_newTab = sheet_parametres.getRange(1,1).getValue();
range_tabConsultant_default.copyFormatToRange(sheet_staffing, 1, 36, row_position_newTab, row_position_newTab + 6);
range_tabConsultant_default.copyValuesToRange(sheet_staffing, 1, 36, row_position_newTab, row_position_newTab + 6);
sheet_parametres.getRange(1,1).setValue(row_position_newTab+6);
}

Это как вкладка по умолчанию, это одна вкладка на человека, но я не знаю, как копировать формулы из вкладки def в вкладку, созданную скриптом. Может кто-то помочь мне с этим?


person ElPoney    schedule 11.06.2012    source источник


Ответы (3)


Взгляните на getFormulas и getFormulasR1C1 класса Range. Вам также необходимо использовать соответствующие setFormulas или setFormulasR1C1.

[изменить: ответить на комментарии]

Если в диапазоне с несколькими ячейками вы копируете смешанные значения и формулы. Вам придется разбить вызовы на несколько наборов для значения или формулы, поскольку одна ячейка может иметь только один (или разобрать простые значения в простые формулы, например = "значение").

Чтобы формулы «следовали» ссылке, используйте обозначение set/getFormulasR1C1 вместо более простого set/getFormulas.

person Henrique G. Abreu    schedule 11.06.2012
comment
Он работает, но не так, как я ожидал, например, я хочу D40 = sum (D41: D45), но для следующей вкладки, которую я добавлю на свой лист, потребуется формула D46 = (D47: D51). Нет возможности сделать это? - person ElPoney; 11.06.2012
comment
И если я установлю это: range_newTab.setFormulas (Formulas_tab); перед моим CopyValueToRange () он не работает, и если я установлю его после, CopyValueToRange () не работает. - person ElPoney; 11.06.2012
comment
Хорошо, после всей его работы, но если я использую copyValueToRange, мне придется использовать много setFormula (потому что setFormulas не работает). Спасибо за вашу помощь ! - person ElPoney; 13.06.2012

Что, если бы сценарий использовал текущий лист, который просматривал пользователь с помощью этой функции? GetActiveSheet.

person corn3lius    schedule 11.06.2012
comment
Я не думаю, что это сработает, потому что, если пользователь запустит скрипт не с того листа, он сделает вкладку на листе и перезапишет информацию. Вот почему я использую ячейку с позицией строки после последней табуляции. - person ElPoney; 11.06.2012

Вот пример того, как скопировать формулу в диапазоне от A1 до A2:A с относительными ссылками:

var sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.getRange("A2:A").setFormulaR1C1(sheet.getRange("A1").getFormulaR1C1());
person vvolkov    schedule 25.07.2019