【发布时间】:2022-10-18 07:54:58
【问题描述】:
我使用了一个脚本,它允许我删除表格中间的空行,并不断在底部添加行,以便我可以继续填充它。 一切都很完美。 如果我在“C”列中删除或添加值,我只想让脚本自动运行。而且,如果可能的话,使用 onOpen(e) 在我的菜单栏中添加一个函数,以防脚本不执行而我必须手动运行它。 这是我的床单:
这是脚本:
function removeEmpty() {
const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Suivi Clients');
const empty_rows = [];
const lastRow = sh.getLastRow()
const data = sh.getRange("C6:G" + lastRow).getValues();
for (var i in data) if (data[i].join('') == '') empty_rows.push(+i + 6);
empty_rows.reverse().forEach(x => sh.deleteRow(x));
sh.insertRowsAfter(lastRow - empty_rows.length, 5)
var rng = sh.getRange('A6:Z6')
rng.copyTo(sh.getRange('A' + (lastRow - empty_rows.length + 1) + ':Z' + (lastRow - empty_rows.length + 5)), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
// H-I-J-K-L
var rng = sh.getRange('H' + (lastRow - empty_rows.length) + ':L' + (lastRow - empty_rows.length))
rng.copyTo(sh.getRange('H' + (lastRow - empty_rows.length + 1) + ':L' + (lastRow - empty_rows.length + 5)), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
// O
var rng = sh.getRange('O' + (lastRow - empty_rows.length) + ':O' + (lastRow - empty_rows.length))
rng.copyTo(sh.getRange('O' + (lastRow - empty_rows.length + 1) + ':O' + (lastRow - empty_rows.length + 5)), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
// Q-R-S-T-U
var rng = sh.getRange('Q' + (lastRow - empty_rows.length) + ':U' + (lastRow - empty_rows.length))
rng.copyTo(sh.getRange('Q' + (lastRow - empty_rows.length + 1) + ':U' + (lastRow - empty_rows.length + 5)), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
// X-Y
var rng = sh.getRange('X' + (lastRow - empty_rows.length) + ':Y' + (lastRow - empty_rows.length))
rng.copyTo(sh.getRange('X' + (lastRow - empty_rows.length + 1) + ':Y' + (lastRow - empty_rows.length + 5)), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
}
【问题讨论】:
-
问题是什么?您不知道如何检测在 onEdit(e) 脚本中编辑了哪一列?很简单,从 e.range.getColumn() 获取
-
不,只想将 onOpen(e) 添加到此脚本,如果可能的话还添加 onEdit(e)。
-
困难在于同时检测多单元格删除的事件!
标签: google-apps-script google-sheets triggers