我想在給定行號后自動滾動到第一行,該行號的 A 列為空卸載作業表(此 Google 表格)
以下公式有效,但滾動到最后一個空行,因為我假設如果一行中有在單元格中添加空白的公式,則將它們計為非空
function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = ss.getSheets()[0].getName();
// Logger.log("DEBUG: sheetname = " sheetname)
var sheet = ss.getSheetByName(sheetname);
var lastRow = sheet.getLastRow();
var range = sheet.getRange(lastRow,1);
sheet.setActiveRange(range);
}
所以我試過這樣修改,但它不會向下滾動
function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = ss.getSheets()[0].getName();
// Logger.log("DEBUG: sheetname = " sheetname)
var sheet = ss.getSheetByName(sheetname);
var lastRow = sheet.getRange('A7:A').getLastRow() 1;
var range = sheet.getRange(lastRow,1);
sheet.setActiveRange(range);
}
A 列在第 600 行為空,但作業表在加載時不滾動
uj5u.com熱心網友回復:
試試這個,而不是內置.lastRow()方法,
您可以改為使用.findIndex()with.reverse()和.length方法來查找列的最后一個非空行號。
function onOpen(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheetname = ss.getSheets()[0].getName();
// Logger.log("DEBUG: sheetname = " sheetname)
const sheet = ss.getSheetByName(sheetname);
const values = sheet.getRange('A7:A').getValues();
const lastRow = values.length - (values.reverse().findIndex(row => !!row[0]));
const range = sheet.getRange(lastRow,1);
sheet.setActiveRange(range);
}
但是,如果您正在尋找the first empty row,您可以考慮更改lastRow變數:
function onOpen(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheetname = ss.getSheets()[0].getName();
// Logger.log("DEBUG: sheetname = " sheetname)
const sheet = ss.getSheetByName(sheetname);
const values = sheet.getRange('A7:A').getValues();
// const lastRow = values.length - (values.reverse().findIndex(row => !!row[0]));
const firstEmptyRow = values.findIndex(row => !row[0]) 1;
// const range = sheet.getRange(lastRow,1);
const range = sheet.getRange(firstEmptyRow,1);
sheet.setActiveRange(range);
}
順便說一句,const無論什么時候可以,什么時候不能,都可以使用宣告變數,這比在 JavaScript 中let使用更好。var
uj5u.com熱心網友回復:
你可以很容易地找到最后一行,getLastRow_()下面附有實用函式。像這樣使用它:
const lastRow = getLastRow_(sheet);
如果要查找特定列中的最后一個非空行,請將列號作為第二個引數:
const lastRow = getLastRow_(sheet, 1);
您需要將函式代碼粘貼到您的腳本專案中:
/**
* Gets the position of the last row that has visible content in a column of the sheet.
* When column is undefined, returns the last row that has visible content in any column.
*
* @param {Sheet} sheet A sheet in a spreadsheet.
* @param {Number} columnNumber Optional. The 1-indexed position of a column in the sheet.
* @return {Number} The 1-indexed row number of the last row that has visible content.
*/
function getLastRow_(sheet, columnNumber) {
// version 1.5, written by --Hyde, 4 April 2021
const values = (
columnNumber
? sheet.getRange(1, columnNumber, sheet.getLastRow() || 1, 1)
: sheet.getDataRange()
).getDisplayValues();
let row = values.length - 1;
while (row && !values[row].join('')) row--;
return row 1;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/533996.html
標籤:谷歌应用脚本谷歌表格
