我目前正在使用谷歌脚本构建一个网络应用程序,该脚本正在阅读并显示来自Google电子表格的实时数据。但是,如果更新电子表格,我希望它更新自动显示的内容,
我一直在尝试使用时间触发来刷新应用程序,但没有任何快乐......它与旧数据保持静态。
任何人都可以帮我吗??
function doGet(e) {
var app = UiApp.createApplication().setTitle('Customer Queue App');
var ss = SpreadsheetApp.openById("SHEET_IDHERE");
app.add(app.createLabel(new Date()).setId("label"))
var mypannel = app.createHorizontalPanel();
var mypannel = app.createHorizontalPanel();
var ss = SpreadsheetApp.openById("sheetID_HERE")
var nc11 = ss.getRange("a2")
var nc12 = ss.getRange("b2")
var nc13 = ss.getRange("c2")
var nc14 = ss.getRange("d2")
var nc15 = ss.getRange("e2")
var nc16 = ss.getRange("f2")
var nc17 = ss.getRange("g2")
var nc21 = ss.getRange("a3")
var nc22 = ss.getRange("b3")
var nc23 = ss.getRange("c3")
var nc24 = ss.getRange("d3")
var nc25 = ss.getRange("e3")
var nc26 = ss.getRange("f3")
var nc27 = ss.getRange("g3")
var nv11 = nc11.getValue()
var nv12 = nc12.getValue()
var nv13 = nc13.getValue()
var nv14 = nc14.getValue()
var nv15 = nc15.getValue()
var nv16 = nc16.getValue()
var nv17 = nc17.getValue()
var nv21 = nc21.getValue()
var nv22 = nc22.getValue()
var nv23 = nc23.getValue()
var nv24 = nc24.getValue()
var nv25 = nc25.getValue()
var nv26 = nc26.getValue()
var nv27 = nc27.getValue()
var mygrid = app.createGrid(5, 7).setId("grid");
mygrid.setWidget(0, 0, app.createLabel(nv12));
mygrid.setWidget(0, 1, app.createLabel(nv13));
mygrid.setWidget(0, 2, app.createLabel(nv14));
mygrid.setWidget(0, 3, app.createLabel(nv15));
mygrid.setWidget(0, 4, app.createLabel(nv16));
mygrid.setWidget(0, 5, app.createLabel(nv17));
mygrid.setWidget(0, 6, app.createButton("Clear Customer").setId("cc1"));
mygrid.setWidget(1, 0, app.createLabel(nv22));
mygrid.setWidget(1, 1, app.createLabel(nv23));
mygrid.setWidget(1, 2, app.createLabel(nv24));
mygrid.setWidget(1, 3, app.createLabel(nv25));
mygrid.setWidget(1, 4, app.createLabel(nv26));
mygrid.setWidget(1, 5, app.createLabel(nv27));
mygrid.setWidget(1, 6, app.createButton("Clear Customer").setId("cc2"));
mygrid.setStyleAttribute("fontSize","65pt");
mygrid.setStyleAttribute("margin-top","5px");
mygrid.setStyleAttribute("font-weight","bold");
mygrid.setStyleAttribute("color","black");
mypannel.add(mygrid);
app.add(mypannel);
app.addTimer(app.createServerHandler("update") , 1000);
return app;
}
function update(e){
var app = UiApp.getActiveApplication();
var ss = SpreadsheetApp.openById("SHEETIDHERE")
app.getElementById("label").setText(new Date());
app.getElementById("grid").setVisible(true);
app.addTimer(app.createServerHandler("update") , 1000);
return app;
}
答案 0 :(得分:0)
您必须使用与日期标签相同的步骤。
为每个元素提供一个ID,并在处理函数中重新分配一个值。
如果你每分钟都在不断更新,请注意配额......
以下是您修改后的代码:(我还更改了无效的font-size属性)
function doGet(e) {
var app = UiApp.createApplication().setTitle('Customer Queue App');
var ss = SpreadsheetApp.openById("0AnqS---------loZ0NFZGc");
app.add(app.createLabel(new Date()).setId("label"))
var mypannel = app.createHorizontalPanel();
var mypannel = app.createHorizontalPanel();
var nv11 = ss.getRange("a2").getValue();
var nv12 = ss.getRange("b2").getValue();
var nv13 = ss.getRange("c2").getValue();
var nv14 = ss.getRange("d2").getValue();
var nv15 = ss.getRange("e2").getValue();
var nv16 = ss.getRange("f2").getValue();
var nv17 = ss.getRange("g2").getValue();
var nv21 = ss.getRange("a3").getValue();
var nv22 = ss.getRange("b3").getValue();
var nv23 = ss.getRange("c3").getValue();
var nv24 = ss.getRange("d3").getValue();
var nv25 = ss.getRange("e3").getValue();
var nv26 = ss.getRange("f3").getValue();
var nv27 = ss.getRange("g3").getValue();
var mygrid = app.createGrid(5, 7).setId("grid");
mygrid.setWidget(0, 0, app.createLabel(nv12).setId('nv12').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(0, 1, app.createLabel(nv13).setId('nv13').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(0, 2, app.createLabel(nv14).setId('nv14').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(0, 3, app.createLabel(nv15).setId('nv15').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(0, 4, app.createLabel(nv16).setId('nv16').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(0, 5, app.createLabel(nv17).setId('nv17').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(0, 6, app.createButton("Clear Customer").setId("cc1").setStyleAttribute("font-size","16pt"));
mygrid.setWidget(1, 0, app.createLabel(nv22).setId('nv22').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(1, 1, app.createLabel(nv23).setId('nv23').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(1, 2, app.createLabel(nv24).setId('nv24').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(1, 3, app.createLabel(nv25).setId('nv25').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(1, 4, app.createLabel(nv26).setId('nv26').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(1, 5, app.createLabel(nv27).setId('nv27').setStyleAttribute("font-size","16pt"));
mygrid.setWidget(1, 6, app.createButton("Clear Customer").setId("cc2").setStyleAttribute("font-size","16pt"));
mygrid.setStyleAttribute("margin-top","5px");
mygrid.setStyleAttribute("font-weight","bold");
mygrid.setStyleAttribute("color","black");
mypannel.add(mygrid);
app.add(mypannel);
app.addTimer(app.createServerHandler("update") , 1000);
return app;
}
function update(e){
var app = UiApp.getActiveApplication();
var ss = SpreadsheetApp.openById("0AnqSFd3iik------------RckloZ0NFZGc");
var nv11 = ss.getRange("a2").getValue();
var nv12 = ss.getRange("b2").getValue();
var nv13 = ss.getRange("c2").getValue();
var nv14 = ss.getRange("d2").getValue();
var nv15 = ss.getRange("e2").getValue();
var nv16 = ss.getRange("f2").getValue();
var nv17 = ss.getRange("g2").getValue();
var nv21 = ss.getRange("a3").getValue();
var nv22 = ss.getRange("b3").getValue();
var nv23 = ss.getRange("c3").getValue();
var nv24 = ss.getRange("d3").getValue();
var nv25 = ss.getRange("e3").getValue();
var nv26 = ss.getRange("f3").getValue();
var nv27 = ss.getRange("g3").getValue();
app.getElementById("label").setText(new Date());
app.getElementById("nv12").setText(nv12);
app.getElementById("nv13").setText(nv13);
app.getElementById("nv14").setText(nv14);
app.getElementById("nv15").setText(nv15);
app.getElementById("nv16").setText(nv16);
app.getElementById("nv17").setText(nv17);
app.getElementById("nv22").setText(nv22);
app.getElementById("nv23").setText(nv23);
app.getElementById("nv24").setText(nv24);
app.getElementById("nv25").setText(nv25);
app.getElementById("nv26").setText(nv26);
app.getElementById("nv27").setText(nv27);
app.addTimer(app.createServerHandler("update") , 1000);
return app;
}
注意:如果您在可能的情况下在for循环中构建代码,则代码可以更紧凑,更易于维护(例如,A2和G2之间的数据位于单个var row1=ss.getRange(2,1,1,7).getValues)
中的同一行中并从那里循环row1[0][n]
循环......等等......)但它的工作原理,它主要是一个选择的问题; - )