我有一个包含多行的简单电子表格,我想自动向每一行添加按钮。
单击此按钮将删除整行并将其移动到另一个电子表格。
我在网上查找过,找不到向电子表格添加按钮的方法。有人建议插入绘图并分配宏,但看起来最新版本缺少此功能。
我还读过有关谷歌应用脚本的内容。我可以将按钮添加到菜单,但不能直接添加到电子表格的每一行。
对于如何更好地实现这一目标,您有什么建议或建议吗?
我建议您在每行末尾创建一列(例如 10),并使用“移动行”列表数据验证,并创建一个像这样的 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
}
}
所以这个脚本并不完全是我自己的作品,而是我在帮助下所做的事情的结果。
它将在源工作表中查找,查看您指定的列(按数字),然后在此工作表中查找值。
如果匹配,它将将该行移动到电子表格内您选择的另一张工作表。
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);
}