2

我想将文本放在特定列的第一个空行内。我尝试按照链接 Faster way 查找 Google Sheet 列中的第一个空行, 我相信与其使用return我应该使用不同的东西,因为我想在该列中放置文本而不是转到该列。

我尝试了放置文本的代码,但我只能对特定的行和列执行此操作

var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange(1,3);
cell.setValue('hello');

如何在下面的代码中实现上述内容,即一旦迭代完成,将文本放在 C 列的第一个空行中

var sheet = SpreadsheetApp.getActiveSheet();
var column = sheet.getRange('C:C');//specific column
var values = column.getValues();//get all data in that column 

var row = 0;
for (var row=0; row<values.length; row++) {
  if (!values[row].join("")) break;
}
return ('hello');
4

2 回答 2

1

这个改装怎么样?

修改点:

  • 在您的脚本中,当 for 循环完成时,row是第一个空行号。这个值可以像sheet.getRange(row + 1, 3).setValue('hello');.
  • C:C修改为时'C1:C' + sheet.getLastRow(),可以缩小搜索范围。

当以上几点反映到您的脚本时,它变成如下。

修改后的脚本:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var column = sheet.getRange('C1:C' + sheet.getLastRow());  // Modified
  var values = column.getValues();
  var row = 0;
  for (row=0; row<values.length; row++) {
    if (!values[row].join("")) break;
  }
  sheet.getRange(row + 1, 3).setValue('hello'); // Added
}
  • 当您运行修改后的脚本时,hello将放在活动工作表中第一个空行的“C”列。

其他图案:

作为其他方法,在您的情况下,您可能可以使用getNextDataCell如下。

SpreadsheetApp
  .getActiveSheet()
  .getRange('C1')
  .getNextDataCell(SpreadsheetApp.Direction.DOWN)
  .offset(1, 0)
  .setValue('hello');

笔记:

  • 如果要将值放在“C”列的最后一行,请测试以下脚本。

    var sheet = SpreadsheetApp.getActiveSheet();
    sheet.getRange(sheet.getLastRow() + 1, 3).setValue('hello');
    

参考:

于 2020-06-14T04:43:06.280 回答
0

我认为您不需要在存储之前检查电子表格中的行是否为空

var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(A:A).setValue("some_data");

通过使用它,您可以简单地将值存储在工作表的第一个空行中。尝试后请检查并回复我

于 2020-07-04T14:07:49.257 回答