簡體   English   中英

Google Apps腳本-無法從未定義中讀取屬性“ 5”

[英]Google Apps Script - Cannot read property “5” from undefined

嘗試將任務標記為已關閉后隱藏Google工作表中的行,然后將值“ 1”寫入單元格,以便下次函數運行時可以忽略隱藏的行。

代碼在網上失敗了,

var status = range[i][5];

運行調試器時,可以看到它已從工作表中讀取了正確的值。 它還顯示了要隱藏的正確行數組。

感謝任何幫助,其余代碼如下。

function HideClosed() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Form responses 5");
    var numRows = sheet.getLastRow();
    var lastCol = sheet.getLastColumn();
    var startRow = 2;
    var range = sheet.getRange(2, 1, numRows-startRow,lastCol).getValues();  //Get all values except the header rows

    var rowsToHide = [];

    for (var i = 2; i < numRows; i++){
        var status = range[i][5];  // checks column 6 for status
        var hidden = range[i][34];  // checks column 35 for hidden status

        if (status == "Closed" && hidden != "1") {  // checks for Closed jobs //that have not been hidden yet
            rowsToHide.push(i+1);
        }
    }

    var L = rowsToHide.length;

    for (i = L ; i>0; i--){
        sheet.hideRows(rowsToHide[i-1]);
        sheet.getRange(rowsToHide[i][34]).setValue("1");   // writes 1 to column 35 after hiding //row
    }
}

@Cooper-是的,那很好,謝謝。

但是,這非常慢,如果沒有超時,則需要3分鍾才能隱藏15行。 從這里閱讀其他線程來看,這似乎是一個足夠普遍的問題。

今天對其進行了一些更改以嘗試加快速度,但是最后一行出現了“找不到函數隱藏行錯誤”信息。 其他一切在調試器上看起來都不錯。

function HideClosedWN() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form responses 5");
var numRows = sheet.getLastRow();
var lastCol = sheet.getLastColumn();

var startRow = 2;
var range = sheet.getRange(2, 1, numRows-
startRow,lastCol).getValues();  //Get all values except the header rows

var rowsToHide = [];
for (var i=0; i<numRows-startRow; i++){

var status=range[i][5];  //  checks column 6 for status
var hidden=range[i][34];  // checks column 35 for hidden status

if (status == "Closed" && hidden == 1){  
rowsToHide.push(i+1);
}
}

sheet.getRange(2,1,rowsToHide.length,lastCol).hideRows(2,rowsToHide.length); }

我認為這可能會運行:

function HideClosed() 
{
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Form responses 5");
    var numRows = sheet.getLastRow();
    var lastCol = sheet.getLastColumn();
    var startRow = 2;
    var range = sheet.getRange(2, 1, numRows-startRow,lastCol).getValues();  //Get all values except the header rows
    var rowsToHide = [];
    for (var i=0;i<numRows-startRow-1;i++)
    {
        var status=range[i][5];  // checks column 6 for status
        var hidden=range[i][34];  // checks column 35 for hidden status
        if (status=="Closed" && hidden!=1) 
        {  
          rowsToHide.push(i+1);
        }
    }
    var L=rowsToHide.length;
    for (i=rowsToHide.length-1; i>=0;i--)
    {
        sheet.hideRows(rowsToHide[i]);
        sheet.getRange(rowsToHide[i],35).setValue(1);   // writes 1 to column 35 after hiding //row
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM