脚本-根据条件,在下面添加一行

时间:2019-06-26 11:43:18

标签: google-apps-script

脚本的亲爱的Oracle,

我一直在尝试获取一些脚本,以便在我输入的行下方自动添加一行,但前提是“余额”为零,但不为零。如果为零,则不希望再添加一行。

我尝试了一些脚本并环顾了整个站点,并在编辑时使用触发器进行了尝试,但是尽管我试图说明触发条件,但它们似乎只是增加了一行。

function onEdit(event) {
  var eventRange = event.range;
  if (eventRange.getColumn() == 12) { // 12 = column of input that triggers it

    var columnXRange = 
 SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 13, 
 eventRange.getNumRows(), 12); /// column number it affects

    var values = columnXRange.getValues();

    for (var i = 0; i < values.length; i++) {
      if (!values[i][0]) {  // If cell isn't empty
       values[i][0] = '0';
      }
    }
        columnXRange.setValues(values);
       }
    }
    function Clear(e){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('AGL');
    sheet.getRange('N4:N').clearContent();
    }

      function AddRow() {
     var sheet = SpreadsheetApp.getActiveSheet();
     if (sheet.getName() == "AGL") {
       var activeCell = sheet.getActiveCell();
       if (activeCell.getColumn() == 13) {
      var Balance = sheet.getRange('N:N');
      if (Balance != '0'); {
      sheet.insertRowAfter(activeCell.getRow());
      }
    }
  }
}

在N列中,我有一个数组公式计算出存货的余额与存货的余额。

在M列中,我正在运行一个脚本,当在L列中放入某些内容时,该脚本将添加0。我也有一个脚本,该脚本会擦除数组公式的输出,因此它们不会彼此缠结

我想在编辑一行时,将图形放在L或M列中,并且如果N列中的余额大于0,我想在其下添加新行。 (如果您可以从A&B中添加值,那将是一个奖励,但并不繁琐。)如果余额为0,则我不想添加行。

目前,我混合的结果是每次我编辑N列时都添加一行。

1 个答案:

答案 0 :(得分:1)

要求:

在编辑L或M列并且N列的值大于0时添加一行(如果可能,则将A和B列的值添加到新行中)。


解决方案:

这几乎是您脚本所需要的。我添加了评论来解释每个部分的功能,因此应该很容易理解。

function onEdit(e) {
  //define edited sheet, row number and column number
  var sh = e.source.getActiveSheet();
  var row = e.range.getRow();
  var col = e.range.getColumn();

  //get value of column N for edited row
  var val = sh.getRange(row, 14).getValue(); 

  //if columns L or M are edited and column N is greater than 0
  if ((col === 12 || col === 13) === true && val > 0) {

    //insert row below edited row
    sh.insertRowAfter(row); 

    //get values of columns A and B of edited row
    var vals = sh.getRange(row, 1, 1, 2).getValues(); 

    //set values in columns A and B
    sh.getRange(row+1, 1, 1, 2).setValues(vals);
  }
}

注意:

我没有包含任何其他功能,只添加了一行,如果需要,您可以将其合并到此功能中。

您将根本无法手动运行此脚本(它将在第一行中失败),它将在编辑工作表时自动运行。


参考文献:

  1. Event Objects
  2. Class Sheet