如何在谷歌电子表格中每行添加一个按钮?

问题描述 投票:0回答:2

我有一个包含多行的简单电子表格,我想自动向每一行添加按钮。

单击此按钮将删除整行并将其移动到另一个电子表格。

我在网上查找过,找不到向电子表格添加按钮的方法。有人建议插入绘图并分配宏,但看起来最新版本缺少此功能。

我还读过有关谷歌应用脚本的内容。我可以将按钮添加到菜单,但不能直接添加到电子表格的每一行。

对于如何更好地实现这一目标,您有什么建议或建议吗?

google-sheets google-apps-script google-apps
2个回答
2
投票

我建议您在每行末尾创建一列(例如 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
  }

}

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.