目標:我試圖創建Google Spreadsheets中四個類的行爲跟蹤器。跟蹤器有九張紙:Class7A,Class7B,Class8A,Class8B和週一至週五的彙總表。目標是每個ClassXX工作表具有整個星期的行爲跟蹤信息,但是默認視圖只顯示當天的信息。隱藏所有,但四個工作表上的今天的列(谷歌電子表格腳本)
嘗試:在初始檢查(僅創造了Class7A片),我得到了這個用在這裏找到腳本的修改工作(謝謝雅各月Tuinstra!):Optimize Google Script for Hiding Columns
我修改了它檢查每列第三行的值(週一持有1,週二持有2,等等),如果它不符合一週當天的數字(var d = new Date(); var n = d.getDay();),那麼它會隱藏該列。這個過程有點慢 - 我假設因爲迭代每列 - 但它的工作。
很興奮,我繼續添加紙張的休息,再次嘗試 - 但編寫的代碼,似乎隻影響當前工作表。我嘗試通過替換var sheet = ss.getSheets()[0];來修改它。使用迭代通過列的腳本,直到i> 4(我已經失去了那段代碼),沒有運氣。
決定回去試着將原始版本的腳本,而不是明確的運行對每一個命名錶多次,我發現該腳本似乎不再在所有的工作。我得到各種版本的「無法在表單中找到XX功能」或「在範圍內找不到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);
}
謝謝你,這是完美的! – Lea