2014-10-12 131 views
0

我想在电子表格中插入一个删除行的可删除单元格。 详情: 我有一个表格。此表单填充电子表格,此电子表格位于Google网站上。 现在,我需要在每一行中添加一个“删除”链接,以便当用户在Google网站中单击该行时,该行被删除。Appscript单击“删除链接”后删除电子表格行

感谢

回答

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