我有getLastRow()問題。我認爲這個函數應該返回有數據的最後一行。但是,由於我正在處理的工作表在填充數據的行下面有更多的空行,函數似乎進入並選擇最後一行的空行而不是選擇最後一行有數據,這可能不會是相同的。有人能告訴我如何解決這個異常。這是谷歌腳本錯誤還是我不清楚該怎麼辦?如果我沒有說清楚,請進一步詢問。問題與getLastRow()
回答
工作表中是否有任何「整列」公式?數組公式或者一直被複制的公式?即使這些公式旨在將空白單元格返回底部,getLastRow()
仍然會捕獲它們。
如果是這種情況,請嘗試:
function getLastPopulatedRow(sheet) {
var data = sheet.getDataRange().getValues();
for (var i = data.length-1; i > 0; i--) {
for (var j = 0; j < data[0].length; j++) {
if (data[i][j]) return i+1;
}
}
return 0; // or 1 depending on your needs
}
,而亞當斯的解決方案將與一些調整工作,我所遇到的另一個解決這個問題的一些搜索。我看到了一個應該找到第一個空行的代碼,我想我可以簡單地返回第一個空行後面的行來獲取最後一個填充行。我附上代碼在這裏:
function getLastPopulatedRow(sheet) {
var cell = sheet.getRange('a1');
var ct = 0;
while (cell.offset(ct, 0).getValue() != "") {
ct++;
}
return (ct--);
}
這涉及更少的循環迭代,也避免了嵌套循環,所以我相信它應該比以前的解決方案更快。 –
是的,但它看起來沒有其他地方比亞列A.亞當的解決方案是掃描整個表。沒有腳本中的奇蹟;-) –
另外,我想知道這種迭代方法的性能 - 可能會調用大量的'getValues()'。 – AdamL
- 1. getLastRow()已棄用?
- 2. Google Apps腳本getLastRow錯誤(
- 3. getLastRow()返回我空值
- 4. Google腳本方法getLastRow變爲空
- 5. 問題與PHP foreach問題
- 6. 問題與ServiceStack.Metadata.BaseMetadataHandler.ProcessOperations
- 7. 問題與jQuery
- 8. 問題與MVCMailer
- 9. 問題與fetchType.Lazy ...!
- 10. 問題與PHP
- 11. 問題與SelectSingleNode
- 12. 問題與System.Activator.CreateInstance
- 13. 問題與extjs
- 14. 問題與
- 15. 問題與request.getSession
- 16. 問題與
- 17. 問題與VisualSVN
- 18. 問題與PDFMerger.php
- 19. 問題與
- 20. 問題與clearInterval
- 21. 問題與dialogfragment.show()
- 22. 問題與setOnPageChangeListener
- 23. 問題與WH_SHELL
- 24. 問題與WPF
- 25. 問題與IE6
- 26. 問題與WPF
- 27. 與drawArc問題
- 28. 問題與AnnotationSessionFactoryBean
- 29. 問題與
- 30. 問題與should.js
嗯,我想,當我做sheet.getLastRow(),它實際上抓住電子表格的最後一行,即使它是未填充的。我想在這裏做的實際上是獲取電子表格的「最後一個填充行」。現在我可以將活動範圍設置爲電子表格的填充部分。但由於工作表會不時被填充,我將不得不動態確定這個填充範圍。那麼我該怎麼做才能動態確定工作表中最後一個填充行。 –
我很抱歉,我還沒有把你的評論標記爲答案。 –
<<我還沒有把你的評論標記爲答案>>哈哈沒問題。從你的評論中,我認爲你可能會一直使用公式。在這種情況下,請嘗試編輯答案中的功能。 – AdamL