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

时间:2014-01-10 23:25:48

标签: google-apps-script google-sheets google-drive-api spreadsheet google-apps

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

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

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

我也读过谷歌应用程序sript。我能够在菜单中添加按钮,但不能直接添加到电子表格的每一行。

您对如何更好地实现这一目标有任何建议或建议吗?

2 个答案:

答案 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);
}