#google-apps-script #google-sheets
#google-apps-script #google-sheets
Вопрос:
Как мне отредактировать приведенный ниже сценарий приложений, чтобы копировать только данные из столбца A в L и P в S? (По сути, я хочу, чтобы он пропускал столбцы M, N, O и все столбцы после S.
function onEdit(event) {
// assumes source data in sheet named Tab 1
// target sheet of move to named Tab 2
// test column with yes/no is col 20 or T
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Tab 1" amp;amp; r.getColumn() == 20 amp;amp; r.getValue() == "yes") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Tab 2");
var target = targetSheet.getRange(targetSheet.getLastRow() 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
Заранее благодарю вас,
с наилучшими пожеланиями,
Роберт
Ответ №1:
Скопируйте оба диапазона ( A-L
, P-S
) отдельно в разные целевые диапазоны, как показано здесь:
function onEdit(e) {
//e.source.toast("Entry");
//console.log(JSON.stringify(e));
const sh=e.range.getSheet();
if(sh.getName()=="Sheet1" amp;amp; e.range.columnStart==20 amp;amp; e.value=="TRUE") {
const tsh=e.source.getSheetByName('Sheet2');
const nr=tsh.getLastRow() 1;
sh.getRange(e.range.rowStart,1,1,12).moveTo(tsh.getRange(nr,1,1,12));
sh.getRange(e.range.rowStart,16,1,4).moveTo(tsh.getRange(nr,16,1,4));
sh.deleteRow(e.range.rowStart);
}
}
Примечание: я использовал ‘Sheet1’ и ‘Sheet2’, а также использовал стандартные значения для флажков вместо ‘yes’ и ‘no’. Я также использовал ‘e’ вместо ‘event’ и использовал данные, доступные в объекте event.
Комментарии:
1. Не могли бы вы добавить объяснение того, что вы сделали? Что-то вроде «Извлекать и использовать оба исходных и оба целевых диапазона отдельно».