这是我正在使用的代码,我很难卡住。
function onEdit(e) {
var myRange = SpreadsheetApp.getActiveSheet().getRange("A:J");
//Let's get the row & column indexes of the active cell
var row = e.range.getRow(1);
var col = e.range.getColumn(0);
//Check that your active cell is within your named range
if (col >= myRange.getColumn() && col <= myRange.getLastColumn() && row >= myRange.getRow() && row <= myRange.getLastRow()) {
if e.myRange === "Renewal" ? myRange.hideColumns(5)
}
}
如果有人能指出我正确的方向,我将不胜感激。
答案 0 :(得分:1)
根据您的代码,如果 A2 中的下拉列表为“续订”,我假设您想隐藏第 5 (E) 列。如果这就是你想要的,那么你的脚本就会有很多问题。
function onEdit(e) {
// get current sheet
var sheet = e.source.getActiveSheet();
// get row and column of edited cell
var row = e.range.getRow();
var col = e.range.getColumn();
// make sure to only hide/show column if edited cell is A2 in 'Sheet1'
if (col == 1 && row == 2 && sheet.getSheetName() == 'Sheet1') {
// if value of A2 in Sheet1 is Renewal, hide columns, if not Renewal, then show the same columns back
if (e.value === "Renewal") {
sheet.hideColumns(5, 2); // hide column 5-6 (E-F)
sheet.hideColumns(8, 1); // hide column 8 (H)
}
else {
sheet.showColumns(5, 2); // show column 5-6 (E-F)
sheet.showColumns(8, 1); // show column 8 (H)
}
}
}
getRow()
和 getColumn()
分别获取范围的当前行和列。你不在这里传递参数if
语句,它总是需要 else 部分。因此,如果 A2 不是 Renewal,我添加了 showColumns
以显示隐藏列。hideColumns()
是一种工作表方法,而不是范围,因此您需要获取当前编辑的工作表。此外,它接受 2 个参数,即开始隐藏列的索引以及需要隐藏的列数。