添加一行的 Google 表格脚本

Posted

技术标签:

【中文标题】添加一行的 Google 表格脚本【英文标题】:Google sheets script that add a row 【发布时间】:2020-12-05 20:01:08 【问题描述】:

我不知道如何编码或编写脚本。

我有一个录制脚本/宏,可以根据 2 个条件对范围进行排序/排序,非常适合我的需求。

我想添加一个功能,但不知道怎么做,我希望脚本在条件 1 之间添加一个空白行(第 34 列)。

以下脚本的第一个条件是根据第34列(或AH)中的2个单词排序/排序,是否可以在“边界”之间自动添加一个空白行?

这是我的代码:

/** @OnlyCurrentDoc */

function Navios() 
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('u3:Ak').activate()
  .sort([column: 34, ascending: true, column: 22, ascending: true]);
;

这是example sheet(请忽略条件格式)。我想要 AH(或 34)列中的“A decorrer”和“Concluido”之间的空白行

有人可以帮忙吗?

谢谢。

【问题讨论】:

【参考方案1】:

我相信你的目标如下。

在函数Navios() 中运行排序脚本后,您希望在“AH”列的A decorrer 的值和Concluido 的值之间插入新行。

修改点:

在这种情况下,我想建议以下流程。
    运行您的脚本以在函数Navios() 中进行排序。 在函数Navios() 中添加用于插入新行的脚本。
      检索“AH”列的值。 检索值A decorrerConcluido 的边界。 在值之间插入新行。

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

修改脚本:

function Navios() 
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var range = spreadsheet.getRange('u3:Ak');  // Modified
  range.activate().sort([column: 34, ascending: true, column: 22, ascending: true]);  // Modified

  // I added below script.
  var values = range.offset(0, 13, range.getNumRows(), 1).getValues();
  for (var i = 0; i < values.length; i++) 
    if (values[i][0] != values[0][0]) 
      spreadsheet.insertRowAfter(i + 2);
      // spreadsheet.deleteRow(spreadsheet.getMaxRows());
      break;
    
  

在此修改后的脚本中,当脚本运行时,会在工作表中添加一行。这样,每次运行都会增加行数。如果要在脚本运行时保持行数,请使用// spreadsheet.deleteRow(spreadsheet.getMaxRows()); 行。这样,当插入新行时,将删除工作表的底行。这样,保持行数。但我不确定你的实际情况。所以我建议将其作为附加信息。

参考:

insertRowAfter(afterPosition)

【讨论】:

以上是关于添加一行的 Google 表格脚本的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本 - 将一行数据从一个电子表格移动到另一个电子表格

使用 Google BigQuery / Apps 脚本为插入 Google 表格的数据添加时间戳

如何使用 Google Apps 脚本将公式添加到 Google 表格?

使用Google Apps脚本Web应用添加到Google表格

Google Apps 脚本:Google 表格分组

使用对话框将脚本添加到 Google 表格中的单元格