我有一个包含多行的简单电子表格,我想自动为每个行添加按钮。
单击此按钮将删除整行并将其移动到另一个电子表格。
我在线查看,无法找到向电子表格添加按钮的方法。有些人建议插入图纸并分配宏,但看起来最新版本缺少此功能。
我也读过谷歌应用程序sript。我能够在菜单中添加按钮,但不能直接添加到电子表格的每一行。
您对如何更好地实现这一目标有任何建议或建议吗?
答案 0 :(得分:1)
我建议你在每行末尾创建一个列(比如10),列表数据验证为“Move Row”并创建一个onEdit函数,如此
function onEdit(eventInfo) {
if (eventInfo.range.getColumn() == 10 && eventInfo.value == "Move Row")
{
var ss = eventInfo.source;
var row = eventInfo.range.getRow();
var range = ss.getRange(row, 1, 10) // this is your range, do with it what you will
}
}
答案 1 :(得分:0)
所以这个剧本并不完全是我自己的作品,而是我正在努力帮助的结果。
它将查看源表,查看您指定的列(按编号),并在此表中查找值。
如果匹配,它会将该行移动到您选择的传感器内的另一张纸上。
function moveRowInternalSheet()
{
var sourceSheet = "";
var columnNumberToWatch = ;
var valueToFind = "";
var destinationSheet = "";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sourceSheet);
var values = sheet.getDataRange().getValues();
var counter = 1; //starts looking in second row, due to header
var archive = [];
while (counter < values.length)
{
if (values[counter][columnNumberToWatch - 1] == valueToFind)
{
archive.push(values.splice(counter, 1)[0]);
}
else
{
// If the value to find is not found. Then increment the counter by 1
counter++;
}
}
var archiveLength = archive.length;
if (!archiveLength) return;
var targetSheet = ss.getSheetByName(destinationSheet);
var lastRow = targetSheet.getLastRow();
var requiredRows = lastRow + archiveLength - targetSheet.getMaxRows();
if (requiredRows > 0) targetSheet.insertRowsAfter(lastRow, requiredRows);
targetSheet.getRange(lastRow + 1, 1, archiveLength, archive[0].length).setValues(archive);
sheet.clearContents();
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}