Google App Script: Auto Refresh after form submission

匿名 (未验证) 提交于 2019-12-03 01:45:01

问题:

So I have an app script gadget embedded in a google site. What the app script does is get objects from scriptdb and display it on the screen. There also is an add button clicking on which you get a form to enter information and add objects. What I am trying to do is that after an object is saved, I repopulate the object and display them so the newly created object can be seen without manually refreshing the page.

I have a function called update() that is called after an object is saved and this function takes care of the "auto refresh".

In the save() function, I call the update function with this syntax, update(). Here is the submit() function

function SaveAssignment(e){     var db = ScriptDb.getMyDb();     var app = UiApp.getActiveApplication();     var name = e.parameter.assignmentname;    var date = e.parameter.assignmentdate.toString();    var desc = e.parameter.assignmentdesc;    var category = e.parameter.assignmentcategory;    var totalscore = e.parameter.assignmenttotalscore;     var site = SitesApp.getActiveSite();     var assignment = { name: name,                 date: date,                 description: desc,                 url: pageUrl + '?name='+name+'&date='+date+'&description='+desc+'&id='+sheetId,                 sheetid: sheetId,                 totalScore: totalscore,                 Category: category                };    db.save(assignment);    update(); } 

and here is my update() method

function update(){   var app = UiApp.createApplication();    var oldGrid = app.getElementById('grid');   app.remove(oldGrid);    var handler = app.createServerHandler('AddAssignment');    var addAssignmentButton = app.createButton('Add Assignment', handler);    var assignments = db.query({});   var i = 1;   var j = 1;    var grid;    if(assignments.getSize() < 1){     grid =  app.createGrid(3, 5).setId('grid');   }   else{    grid = app.createGrid(assignments.getSize() + assignments.getSize() + assignments.getSize(), 5).setId('grid');   }   handler.addCallbackElement(grid);   grid.setWidget(0, 2, addAssignmentButton);    while(assignments.hasNext()){     var assignment = assignments.next();     var name = assignment.name;     var date = assignment.date;     var description = assignment.description;      var nameLabel = app.createLabel('Assignment ' + i + ' : ' + name).setVisible(true);     var dateLabel = app.createLabel('Date: ' + date).setVisible(true);     var idLabel = app.createLabel(assignment.getId()).setVisible(false);     var deletebutton = app.createButton('Delete Assignment');     var handler = app.createServerHandler('deleteAssignment');     handler.addCallbackElement(idLabel);    deletebutton.addClickHandler(handler);     grid.setWidget(j, 0, nameLabel);    j = j + 1;    grid.setWidget(j, 0, dateLabel);    grid.setWidget(j, 1, deletebutton);    grid.setWidget(j, 3, idLabel);      i++;     j = j + 2;  }  app.add(grid);  return app; 

回答1:

I made some little test on your code. you need to do some little changes:
You need to change "var app = UiApp.createApplication();" for "var app = UiApp.getActiveApplication()" (already saw that in comment).
You didn't declared "db" your script will systematically be in error if you don't correct that.

Bellow your code where the update function actually update the grid:

function doGet(){  var app = UiApp.createApplication();   var grid = app.createGrid(3, 3).setId("grid").setWidget(1, 2, app.createLabel("test"));   grid.addClickHandler(app.createServerHandler("update"));   app.add(grid);   return(app); }  function update(){   var app = UiApp.getActiveApplication(); // getActiveApplication    var oldGrid = app.getElementById('grid');   app.remove(oldGrid);    var handler = app.createServerHandler('AddAssignment');   var addAssignmentButton = app.createButton('Add Assignment', handler);   var db = ScriptDb.getMyDb();   var assignments = db.query({}); // YOU DIDNT DECLARED db    var i = 1;   var j = 1;   var grid;    if(assignments.getSize() < 1){     grid =  app.createGrid(3, 5).setId('grid');   }   else{    grid = app.createGrid(assignments.getSize() + assignments.getSize() + assignments.getSize(), 5).setId('grid'); // assignments.getSize()*3   }   handler.addCallbackElement(grid);   grid.setWidget(0, 2, addAssignmentButton);    while(assignments.hasNext()){     var assignment = assignments.next();     var name = assignment.name;     var date = assignment.date;     var description = assignment.description;     var nameLabel = app.createLabel('Assignment ' + i + ' : ' + name).setVisible(true);     var dateLabel = app.createLabel('Date: ' + date).setVisible(true);     var idLabel = app.createLabel(assignment.getId()).setVisible(false);     var deletebutton = app.createButton('Delete Assignment');     var handler = app.createServerHandler('deleteAssignment');    handler.addCallbackElement(idLabel);    deletebutton.addClickHandler(handler);    grid.setWidget(j, 0, nameLabel);    j = j + 1;    grid.setWidget(j, 0, dateLabel);    grid.setWidget(j, 1, deletebutton);    grid.setWidget(j, 3, idLabel);     i++;     j = j + 2;  }  app.add(grid);  return app; } 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!