Google应用程序脚本既可以生成新行,也可以生成带有脚本的按钮

时间:2020-10-28 12:37:30

标签: google-apps-script google-sheets google-sheets-formula

我正在尝试为工作表创建一个google脚本,其中它将自动生成一些包含信息的行,并且在该行的末尾(例如Z列),将生成一个按钮。该按钮的作用是在下面添加一个空白/空行。他们希望以按钮为基础,因为只是有时候他们会在下面插入一行(所以不是每次都插入)。

我已经使脚本生成仅包含信息的行,但是它不包含在Z列带有单独脚本的按钮,但是有办法吗?还是像重新发明轮子那样简单地不切实际/疯狂?

更高的姿势超级懒惰,他们希望单击1下的空白行而不是右键单击,并希望在2单击中插入行。

谢谢。

1 个答案:

答案 0 :(得分:2)

我将在该列中插入复选框,并使用它们而不是按钮。您的脚本需要在编辑时获取活动行的索引,检查复选框的值为true,在活动行索引下方添加行,然后将复选框的值设置回false。

编辑

如果选中整列并插入复选框,则复选框将自动添加到任何插入的行中。

这里是一个例子:

https://docs.google.com/spreadsheets/d/1NmNb-DMgtA2BaQi9KlEUcZatDU9A4lDkQ9J2580Rgk4/edit?usp=sharing

可以通过复制此示例表来获得可编辑的版本。

代码如下:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();

function onEdit(e) {
  Logger.log('e.value: ' + e.value);
  
  var range = e.range;
  var value = e.value;
  var colIndex = range.getColumn();
  var rowIndex = range.getRow();
  var lastCol = sheet.getLastColumn();
  
  Logger.log('lastCol,colIndex,rowIndex: ' + lastCol + ',' + colIndex + ',' + rowIndex);
  
  //here the last column is the column with the check boxes
  if(colIndex == lastCol && value == "TRUE"){
    Logger.log('true');
    sheet.insertRowAfter(rowIndex);
    sheet.getRange(rowIndex,colIndex).setValue(false);
  }
}

如果只想在生成的行上使用复选框,则可以使用类似以下内容的

var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
sheet.getRange(rowIndex,colIndex).setDataValidation(rule).setValue(false);

当然,在这种情况下,rowIndex将是您生成的行的索引。