首页 > 解决方案 > 复制和插入行(带公式)A列有*的所有地方

问题描述

TL;DR - 复制第 2 行并在 A 列包含“*”字符的任何地方(上面的一行)插入。

大家好。我正在尝试使用 Google Apps 脚本来构建一个自动化功能,该功能将复制一行(使用公式)并将这个复制的行插入到满足定义条件的任何地方(A 列有 *)。我已经能够编写(1)一个脚本,它将在有 * 的任何地方插入一个空白行,(2)一个脚本,它将复制公式并插入到最后一行 - 但我无法合并两者成功地。

到目前为止,我有以下内容,感觉很接近 - 但无法进一步调整以获得所需的结果:

function insertRecord() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();                     
  var lRow = sh.getLastRow();                       
  var lCol = sh.getLastColumn();                    

  var range = sh.getRange(2,1,1,lCol);              
  var formulas = range.getFormulas();               

  var values = sh.getRange('A:A').getValues();

  for ( var i = values.length-1 ; i >= 0 ; i-- )    
    if (values[i][0] == "*")      
      sh.insertRowBefore(i+1)                             
      var newRange = sh.getRange(lRow, 1, 1, lCol)   
      range.copyTo(newRange);                       
}

请在此处查看我的Google 表格模板。如果您有任何问题,请告诉我!并感谢您的帮助。

标签: google-apps-scriptgoogle-sheets

解决方案


像这样的东西?

function insertRecord() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var lRow = sh.getLastRow();
  var lCol = sh.getLastColumn();

  var range = sh.getRange(2,1,1,lCol);
  var values = sh.getRange('A:A').getValues();

  for ( var i = values.length-1 ; i >= 0 ; i-- ) {
    if (values[i][0] == "*") {
      sh.insertRowBefore(i+1)
      var newRange = sh.getRange(i+1, 1, 1, lCol)
      range.copyTo(newRange);
    }
  }
}

推荐阅读