[英]Google Sheets Script - Get first blank cell
我想找到一個范圍內的第一個空白單元格。 該代碼有效,但似乎已鏈接到B列。
function selectFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); sheet.setActiveSelection(sheet.getRange("D"+getFirstEmptyRow())) } function getFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getDataRange(); var values = range.getValues(); var row = 26; for (var row=26; row<values.length; row++) { if (!values[row].join("")) break; } return (row+1); }
當我運行它時,它將選擇D中的單元格,但是會根據B查找空白。
假設我們正在10-20行中工作。 B列中有10-12的內容。 我運行它(據我所知應該在D上運行),它將選擇D13(因為B10:B12中有東西。即使D中什么都沒有,它也應該選擇D10。
UPDATE :::
因此,我建議您進行一些更改。
function selectFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); sheet.setActiveSelection(sheet.getRange("B"+getFirstEmptyRow())) } function getFirstEmptyRow() { var sheet = SpreadsheetApp.getActiveSheet(); var lastRow = sheet.getLastRow(); //getRange(row, column, numRows, numColumns) var range = sheet.getRange(28, 2, lastRow - 28, 1); var values = range.getValues(); var row = 28; for (var i=0; i<values.length; i++) { if (!values[i].join(" ")) break; } return (row+1); }
它總是選擇第29行(我想是因為它從28開始,並且我有return(row + 1)?
這行:
var row = 26;
硬編碼的起始編號為26。循環計數從26開始:
for (var row=26; row<values.length; row++) {
如果您希望循環從起始行10循環到最后一行,請將該行更改為:
for (var i=0; i<values.length; i++) {
您的代碼實際上兩次定義了變量row
。 一次位於for
循環之上,一次位於for
循環內部。 row
變量根本不應該在循環中使用。 for
循環需要它自己的計數器。
在這行代碼中:
for (var row=26; row<values.length; row++) {
JavaScript Array join()方法從數組返回一個字符串。
此行代碼中的getDataRange()
方法:
var range = sheet.getDataRange();
返回工作表中所有行和列的二維數組。 范圍從工作表中數據的左上角開始。 如果要排除直到C列(包括C列)的列,請使用其他方法獲取不同的范圍。
因此,我將更改此行:
var range = sheet.getDataRange();
也許將代碼更改為:
var lastRow = sheet.getLastRow();
//getRange(row, column, numRows, numColumns)
var range = sheet.getRange(10, 4, lastRow - 10, 1);
上面的代碼將獲取一個二維數據數組,從第10行第4列開始,並且比總行數少10行,並且僅從D列(第4列)獲取一列數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.