应用脚本点击“删除链接”后删除电子表格行

时间:2014-10-12 09:00:52

标签: google-apps-script spreadsheet

我想在电子表格中插入一个删除行的可识别单元格。 详情如下: 我有一张表格。此表单填充电子表格,此电子表格位于Google网站上。 现在,我需要在每一行中添加一个"删除"链接,因此当用户在google网站中点击该行时,该行将被删除。

由于

1 个答案:

答案 0 :(得分:0)

当您将电子表格发布为网页时,它会丢失其所有电子表格特定功能和功能,除了查看其内容外,您无法对其进行任何操作。

要获得您想要的内容,您应该将电子表格转换为html表格,并在每一行中插入一个可点击的按钮,该按钮将调用将删除该行的处理程序。

这可以通过UiApp或HTML服务来完成,并且根据工作表的复杂程度,可能很简单或相当复杂。

以下是"电子表格到webapp转换" 的基本实现,每行都有一个按钮,允许行隐藏。它不会更新工作表本身,但可以很容易地将其添加到处理函数中。

function doGet() {
  var app = UiApp.createApplication().setTitle('ss to Ui');
  var data = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1x8buwrYsb8-HSUJ7w7MeqZAiJJIX0yC-oITBAtykBAM/edit#gid=0').getSheets()[0].getDataRange().getValues();
  var grid = app.createGrid(data.length, data[0].length+1).setBorderWidth(1).setId('grid');
  var hidden = app.createHidden('hidden',data[0].length);
  var handler = app.createServerHandler('deleteRow').addCallbackElement(grid).addCallbackElement(hidden);
  for(var n in data){
    for(var i in data[0]){
      grid.setText(Number(n),Number(i),data[n][i].toString());
    }
    var button = app.createButton('x',handler).setId(n);
    grid.setWidget(Number(n),Number(i)+1,button);
  }
  var hidden = app.createHidden('hidden',data[0].length);
  app.add(grid).add(hidden);
  return app;
}

function deleteRow(e){
  var app = UiApp.getActiveApplication();
  var row = Number(e.parameter.source);
  var grid = app.getElementById('grid');
  var dataW = Number(e.parameter.hidden);
  for(var n = 0;n<dataW;n++){grid.setText(row,n,'')};
  app.getElementById(row.toString()).setVisible(false);
  return app;
}

测试online here

电子表格如下所示:

enter image description here

相关问题