我想在电子表格中插入一个删除行的可识别单元格。 详情如下: 我有一张表格。此表单填充电子表格,此电子表格位于Google网站上。 现在,我需要在每一行中添加一个"删除"链接,因此当用户在google网站中点击该行时,该行将被删除。
由于
答案 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;
}
电子表格如下所示: