2014-10-12 98 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