我正在尝试为工作表创建一个google脚本,其中它将自动生成一些包含信息的行,并且在该行的末尾(例如Z列),将生成一个按钮。该按钮的作用是在下面添加一个空白/空行。他们希望以按钮为基础,因为只是有时候他们会在下面插入一行(所以不是每次都插入)。
我已经使脚本生成仅包含信息的行,但是它不包含在Z列带有单独脚本的按钮,但是有办法吗?还是像重新发明轮子那样简单地不切实际/疯狂?
更高的姿势超级懒惰,他们希望单击1下的空白行而不是右键单击,并希望在2单击中插入行。
谢谢。
答案 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
将是您生成的行的索引。