首页 > 解决方案 > 将行附加到特定列?

问题描述

function dailyprofit() {
   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Matt");
   var profit = SpreadsheetApp.getActiveSheet().getRange('O2').getValue();
   sheet.appendRow([,,,profit ]);
}

您好,我正在尝试使用 appendrow 将我的变量放入 D 行的最后一个空白单元格,但是 appendRow 执行的是 entre 行,而不仅仅是 D 列。我希望将“利润”附加到第 362 行而不是行363 ->在此处查看示例 谢谢!

标签: google-apps-scriptgoogle-sheets

解决方案


您可以使用此示例代码获取 D 列的最后一行:

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Matt");
  var profit = SpreadsheetApp.getActiveSheet().getRange('O2').getValue();
  var colValues = sheet.getRange("D1:D").getValues();
  var count = colValues.filter(String).length
  sheet.getRange(count+1,4).setValue(profit);

它能做什么?

  1. 使用获取所有列 D 值sheet.getRange("D1:D").getValues()
  2. 使用字符串值过滤数组并获取其长度/计数。空单元格将不计算在内。
  3. 将 D 列计数增加 1 并使用Sheet.getRange(row,column)获取 D 列中非空单元格下方的单元格。使用Range.setValue(value)设置单元格值。

样本输出:

在此处输入图像描述


笔记:

这只有在 D 列中没有空行的情况下才有效。

如果 D 列中有空行,则在增加计数时可能需要添加更多偏移量。

例子:

在此处输入图像描述

  • 我有 2 个空标题行(第 1 行和第 2 行)。因此,行数的偏移量应该是+3。

示例代码:

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Matt");
  var profit = SpreadsheetApp.getActiveSheet().getRange('O2').getValue();
  var colValues = sheet.getRange("D1:D").getValues();
  var count = colValues.filter(String).length
  sheet.getRange(count+3,4).setValue(profit);

推荐阅读