#google-apps-script #google-sheets
#google-apps-script #google-sheets
Вопрос:
У меня есть счетчик в ячейке F26
, который начинается с 0
и увеличивается на единицу каждый раз, когда под ним добавляется новая строка с текстом. При первом выполнении скрипта он скопирует значения формул в F27:G27
to F27:G27
(и добавит значение 0
из счетчика и, таким образом, будет в строке 27
). При следующем выполнении он примет значение из F26
, то есть сейчас 1
, и добавит его к номеру строки 27
, чтобы выполнить следующее выполнение F28:G28
F28:G28
и так далее.
function test() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('F27:G27').activate();
spreadsheet.setCurrentCell(spreadsheet.getRange('G27'));
spreadsheet.getRange('F27:G27').copyTo(spreadsheet.getActiveRange(),
spreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
Каков был бы правильный синтаксис для этого?
Ответ №1:
Объяснение:
Алгоритмически, вот шаги, которые вам нужно выполнить:
-
Получить текущий счетчик из ячейки
F26
:var counter = sheet.getRange('F26').getValue();
-
Используйте getRange(строка, столбец, numRows, numColumns) и установите в качестве
row
начальной строки27
плюс текущее значениеcounter
:var range = sheet.getRange(27 counter,6,1,2);
-
Скопируйте только содержимое / значения:
range.copyTo(range, {contentsOnly:true});
-
Увеличьте счетчик на
1
:sheet.getRange('F26').setValue(sheet.getRange('F26').getValue() 1);
Фрагмент:
function test() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName('Sheet4'); // change that to your sheet name
var counter = sheet.getRange('F26').getValue(); // get the counter
var range = sheet.getRange(27 counter,6,1,2); // start from 27 plus counter
range.copyTo(range, {contentsOnly:true}); // copy the values
sheet.getRange('F26').setValue(sheet.getRange('F26').getValue() 1); // increase F26 by 1
};