У меня есть скрипт, в котором я перехожу к последней ячейке (это всегда другая строка) и хочу передать значение ячейки из следующей правой ячейки. Затем перейдите на шесть ячеек вправо и вставьте скопированное значение.
// КОПИРОВАТЬ ЗНАЧЕНИЕ и // ВСТАВИТЬ СКОПИРОВАННОЕ ЗНАЧЕНИЕ - моя проблема, потому что у меня нет фиксированной ячейки.
Изображение: оранжевое значение в оранжевой ячейке
// Jump to the End
spreadsheet.getRange('G10').activate();
spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
// go one step to the right
spreadsheet.getCurrentCell().offset(0, 1).activate();
// COPY VALUE
???
// go six steps to the right and PASTE THE COPIED VALUE
spreadsheet.getCurrentCell().offset(0, 6).activate();
spreadsheet.getRange('???').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
Спасибо!
Обновлено:
Значение исходит из последней ячейки в столбце G +1 справа от столбца H. Вот почему я использую SpreadsheetApp.Direction.DOWN. Я хочу скопировать значение из одной ячейки в столбце H в столбец N, но в той же строке. Столбцы всегда одинаковы, но строки меняются при каждой записи. Я добавляю другое изображение.
Спасибо за ответ. Из вашего ответа я предложил ответ. Пожалуйста, подтвердите это. Если я неправильно понял ваш вопрос, прошу прощения.
Попробуй это:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var lastrow = sheet.getLastRow();
var getval = sheet.getRange(lastrow,2).getValue();
sheet.getRange(lastrow, 2).offset(0,6).setValue(getval);
}
Что это делает, так это то, что он переходит к последней строке листа и получает значение lat строки Col2, смещает 6 ячеек вправо и копирует значение в заданное смещение.
Из The value comes from the last Cell in column G +1 to the right from column H. That's why I use SpreadsheetApp.Direction.DOWN. I want to copy the value from the single Cell in column H to column N, but in the same row. The columns are always the same, but the rows change with every Entry. я понял ваш ожидаемый результат следующим образом.
В таком случае, как насчет следующей модификации?
Последнюю строку можно получить с помощью getLastRow() в Class Sheet. И, чтобы скопировать значение, можно использовать copyTo класса Rabge.
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet(); // or SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1")
var srcRange = sheet.getRange("H" + sheet.getLastRow());
srcRange.copyTo(srcRange.offset(0, 6), { contentsOnly: true });
}
В этом случае значение из столбца «H» последней строки копируется в столбец «N».
В качестве другого подхода, когда вы хотите использовать getValue и setValue, вы также можете использовать следующий пример сценария.
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet(); // or SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1")
var srcRange = sheet.getRange("H" + sheet.getLastRow());
srcRange.offset(0, 6).setValue(srcRange.getValue());
}
Я должен извиниться за мое плохое знание английского языка. К сожалению, я не могу понять ваш вопрос. Могу я уточнить детали вашего вопроса? Откуда вы хотите скопировать значение? Кстати, я не вижу координаты ячейки на вашем образце изображения. Например, вы хотите скопировать все значения столбца «G» в столбец «M»?