【发布时间】:2016-09-22 19:00:51
【问题描述】:
目标:我正在尝试为 Google 电子表格中的四个类创建一个行为跟踪器。跟踪器有九张表:Class7A、Class7B、Class8A、Class8B 和周一至周五摘要表。目标是让每个 ClassXX 工作表都包含一整周的行为跟踪信息,但默认视图仅显示当天的信息。
尝试:在初始检查期间(仅创建 Class7A 表),我使用此处找到的脚本的修改使其工作(感谢 Jacob Jan Tuinstra!):Optimize Google Script for Hiding Columns
我对其进行了修改以检查每列第三行中的值(其中周一为 1,周二为 2,等等),以及它是否与一周中的某一天的数值等值不匹配(var d = new Date(); var n = d.getDay();),那么它将隐藏该列。这个过程有点慢 - 我假设是因为遍历每一列 - 但它有效。
非常兴奋,我继续添加其余的工作表,然后再次尝试 - 但编写的代码似乎只影响当前工作表。我尝试通过替换 var sheet = ss.getSheets()[0]; 来修改它使用 for 遍历列的脚本,直到 i>4(我已经丢失了那段代码),没有运气。
决定返回并尝试调整脚本的原始版本,改为为每个命名工作表显式运行多次,我发现该脚本似乎根本不再工作。我得到各种版本的“在工作表中找不到 XX 函数”或“在 Range 中找不到 XX 函数”。
来源:可以在此处找到共享版本(已删除学生信息):https://docs.google.com/spreadsheets/d/1OMq4a4_Gh_xyNk_IRy-mwJn5Hq36RXmdAzTzx7dGii0/edit?usp=sharing(正在编辑)。
延伸目标:最终,我需要让它可靠地仅显示当天的列(通过预设范围(每张纸相同)或 1-5 值),并且我需要它为所有四个 ClassXX 工作表执行此操作,但不是摘要页面(并且最好比迭代更快)。如有必要,我可以删除摘要页面并在外部进行设置,但这不是我的首选。我将非常感谢任何帮助;到目前为止,我的尝试似乎只会让我倒退。
谢谢!
当前代码:
function onOpen() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// create menu
var menu = [
{name: "Show Today Only", functionName: "hideColumn"},
{name: "Show All Days", functionName: "showColumn"},
{name: "Clear Week - WARNING will delete all data", functionName: "clearWeek"}
];
// add to menu
ss.addMenu("Show Days", menu);
}
var d = new Date();
var n = d.getDay();
function hideColumn() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get first sheet
var sheet = ss.getSheets()[0];
// get data
var data = sheet.getDataRange();
// get number of columns
var lastCol = data.getLastColumn()+1;
Logger.log(lastCol);
// itterate through columns
for(var i=1; i<lastCol; i++) {
if(data.getCell(2, i).getValue() != n) {
sheet.hideColumns(i);
}
}
}
function showColumn() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get first sheet
var sheet = ss.getSheets()[0];
// get data
var data = sheet.getDataRange();
// get number of columns
var lastCol = data.getLastColumn();
// show all columns
sheet.showColumns(1, lastCol);
}
【问题讨论】:
标签: javascript google-apps-script