Попытка придумать скрипт приложения Google, который заменяет выходные данные формул статическими значениями за предыдущие недели.
Вот образец Google Sheet
https://docs.google.com/spreadsheets/d/1GaqGBG4YcSihlP10weIr7tnGGgNSvf9XcftEoYeS4DY/edit#gid=0
В таблице есть лист «Отчет», который обновляется один раз в неделю (новые данные перезаписываются), и ячейка B3 получает общее количество хитомеров из этого отчета.
Таблица «Сводка», где строка B29: BA29 - календарные недели.
Ячейка B5 - текущий номер CW для отчета.
Строка B32: BA32 содержит еженедельные данные о количестве клиентов, которых следует выбрать из отчета.
Поскольку Report постоянно обновляется, хотелось бы жестко закодировать результаты формул за последние недели.
Пробовал с петлей и без нее. Пробовал getValues, Logger, setValues. Также попробовал copyValuesToRange. Либо ничего не заменяется, либо все недели получают статические значения, даже будущие.
function freeze() {
var sss = SpreadsheetApp.openById('XXX').getSheetByName('Summary');
var cw = sss.getRange('B5').getValue;//current week
var weeks = sss.getRange('B29:BA29').getValues(); // all weeks
for (var i=0; i<weeks.length; i++) {
// alternatively tried this loop
// for (var i=0; i<weeks[0].length; i=i+1)
if (weeks < cw)
{ var dered = sss.getRange(32,2,1,27);
dered.copyValuesToRange(sss,2,27,32,32);
}}}
или другой код
function freeze() {
var sss = SpreadsheetApp.openById('XXX');
var cw = sss.getSheetByName('Summary').getRange('B5').getValue;
var weeks = sss.getSheetByName('Summary').getRange('B29:BA29').getValues();
var dered = sss.getSheetByName('Summary').getRange('B32:BA32');
var deredvalues = dered.getValues();
if (weeks < cw) {
var deredsum = msred.setValues(deredvalues);
} }
или как это
function freeze() {
var sss = SpreadsheetApp.openById('XXX');
var cw = sss.getSheetByName('Summary').getRange('B5').getValue;
var weeks = sss.getSheetByName('Summary').getRange('B29:BA29').getValues();
var dered = sss.getSheetByName('Summary').getRange('B32:BA32');
if (weeks < cw) {
var deredvalues = dered.getValues();
Logger.log(deredvalues)
dered.setValues(deredvalues);
} }
Либо ничего не заменено, либо все недели получают статические значения, даже будущие. Буду благодарен за идеи.