Ciao a tutti, non riesco ad eliminare una riga in una tabella in GSheet.
Ad oggi utilizzo questo sistema per leggere gli ID.
Selezionando un ID dalla ListView, come faccio ad eliminare la riga corrispondente?
Ho già provato molte soluzioni in rete ma nessuna funziona.
You need to create a google apps script web app to do this.
function doGet(e) {
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rg = sh.getDataRange().getValues();
var index = e.parameter.INDEX; //index in list
var col1 = e.parameter.COL1; // current/existing value of Col1
for (var i = 0; i < rg.length; i++ ) {
if ( index != undefined && i == index && col1 == rg[i][0] ) {
sh.deleteRow(parseInt(index)+1);
}
}
return ContentService.createTextOutput("Record deleted");
}
you would send a url like this:
https://script.google.com/macros/s/AKfycby...21BfQ/exec?ID=1GeT45XhCFpBbYkgORpFUc3Z9y9AexPMNtC7d-J3ju4c&SH=Sheet1&INDEX=101&COL1=Jones
This gets the index of the row in your existing list on AppInventor, and the first item in the row, if these two things match then the row is deleted on the google sheet.
Dallo scrpt mi esce questo errore:
Sorry, I left the "function" off the beginning.
Should be
function doGet(e) {
......
Like this:
global index is your Listview1.SelectionIndex
global col1 is the first item of the sublist in your listview selection
Non funziona.
Ti allego i blocchi creati.
Come creo il "global col1?
Let us assume your main list looks like this:
[[a,b,c],[1,2,3],[x,y,z]]
in your listview you would select from:
(a b c)
(1 2 3)
(x y z)
If you wanted to delete (1 2 3) you would select this in your listview.
in the listview.AfterSelecting you would set global index (2) and global col1 (1)
You listview is not showing a list of lists.
In this case, set global col1 to Listview.Selection.
Are you reading a list in somewhere else ?
Questa è la pagina dei blocchi che utilizzo nello screen2.
Il bottone "read" legge il foglio di excel sulla prima colonna e il risultato è in "listview".
I have never used that extension so do not know how it behaves
"Dendritas table" mi restituisce una tabella acquisendo i dati in CSV. Se dovessi usare solo "listview" come imposto "web1.gottext"?
We are close but something is wrong somewhere. Here is an example that works!
SHEET
SCRIPT
function doGet(e) {
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rg = sh.getDataRange().getValues();
var index = e.parameter.INDEX; //index in list
var col1 = e.parameter.COL1; // current/existing value of Col1
for (var i = 0; i < rg.length; i++ ) {
if ( index != undefined && i == index && col1 == rg[i][0] ) {
sh.deleteRow(parseInt(index)+1);
}
}
return ContentService.createTextOutput("Record deleted");
}
BLOCKS
SCREEN
AIA
deleteRow.aia (4.1 KB)
SHEET URL
Sharing set as a minimuim to anyone with the link. Here I have set to allow anyone to edit so you can test and reset the sheet.
Press the Read button to return the list on the sheet, and display this in the listview
Select an item in the listview to delete the item on the sheet, and update the listview
Ho importato il tuo progetto nelle mie tabelle e funziona tutto.
L'ultimo problema rimasto è se all'interno di una cella ci sono due parole con uno spazio in mezzo il procedimento da errore e non elimina quella determinata riga.
Come possiamo risolvere?
Se invece tra le parole scritte non ci sono spazi il tutto funziona correttamente.
Ho risolto il problema sostituendo lo spazione con l'underscore (_).
Ora funziona tutto a meraviglia.
Grazie infinite per l'aiuto.
Rettifico quello che ho detto prima.
Ora quando inserisco una nuova riga mi esce questo errore: