[英]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.