我将本月的某些日子作为Google电子表格中的列。我正在尝试根据从单元格A2中的下拉列表中选择的月份来编写脚本来自动隐藏列。
到目前为止,我已经能够找到一个脚本,如果Row1中的值为0,我可以自动隐藏列。但是我在实现相同的问题时遇到了问题。我使用IF(OR)公式在要隐藏的列中显示0 [下面的封闭屏幕截图]。
这是我到目前为止提出的脚本,但它不起作用。
oSheets = ThisComponent.getSheets()
oSheet1 = oSheets.getByName("MIS")
oColumns = oSheet1.getColumns()
var i=1;
while (i < 34) // continue running the loop while i is less than 34
{
oCol = oColumns.getByIndex(i)
oCell = oSheet1.getCellByPosition(i,0);
if (oCell.Value = 0) { oCol.isVisible = False;}
else {oCol.isVisible = True}
i++; }
代码中有错误吗?我是电子表格的新手,对Scripts来说是全新的,没有编码背景,因此很混乱。
答案 0 :(得分:0)
感谢来自k4k4sh1的评论,我能够为这个特定的脚本获得正确的代码。
保存此功能后,您还必须设置项目触发器。
我参考了这篇博文:Customise Google Docs-Blogspot
function HideColumns() {
//open the current spreadsheet and get the value of the named range
var ss = SpreadsheetApp.getActive();
var name = ss.getRangeByName("monthfilter");
var namevalue = name.getValue();
//show or hide February
if (namevalue == "February") {
var sheet = ss.getSheetByName("MIS");
sheet.hideColumns(30);
sheet.hideColumns(31);
sheet.hideColumns(32);
}
//show or hide 30 day months
else if (namevalue == "April"||namevalue == "June"||namevalue == "September"||namevalue == "November") {
var sheet = ss.getSheetByName("MIS");
sheet.showColumns(30);
sheet.showColumns(31);
sheet.hideColumns(32);
}
//show or hide 31 day months
else if (namevalue == "January"||namevalue == "March"||namevalue == "July"||namevalue == "August"||namevalue == "October"||namevalue == "December") {
var sheet = ss.getSheetByName("MIS");
sheet.showColumns(30);
sheet.showColumns(31);
sheet.showColumns(32);
}
}