我正在创建一个使用createHTML将数据写入Gadget的脚本,但由于某些原因,当我使用变量时,没有任何内容写入小工具,直接插入文本就可以完美地工作,即createHTML('Hi')。
这是我的代码:
function doGet() {
var app = UiApp.createApplication();
var spreadsheet = SpreadsheetApp.openById('');
var sheet = spreadsheet.getSheetByName('Users');
var user = Session.getActiveUser();
var site = SitesApp.getActivePage();
var url = site.getUrl();
var data = sheet.getDataRange().getValues();
Logger.log(url);
Logger.log(user);
for (var i = 0; i < data.length; i++) {
var row = data[i];
var urlI = row[13];
if (urlI == url){
var about = row[12]
Logger.log(about);
if (about = "")
{
Logger.log('0');
}
else
{
var aboutTxt = app.createHTML('<p>' + about + '</p>');
app.add(aboutTxt);
break;
}
}
}
return app;
}
我认为当从电子表格中读取值到变量时,数据类型不是字符串而是对象或其他东西,但我不确定。如果是这种情况,是否有人知道如何将数据类型转换为字符串或其他解决方法?
提前感谢您的帮助。
答案 0 :(得分:1)
您的代码看起来不错。你确定执行进入了else {}部分吗? 您提到数据类型可能不是String。要将某些内容转换为String,您可以使用toString()方法。
例如:
about.toString()
答案 1 :(得分:0)
你能尝试这个简单的测试吗,只需用一些html内容填充一行单元格上的几个单元格,按下按钮时UI将会更新。
var sh = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
//
function move() {
var app = UiApp.createApplication().setTitle("move test")
.setHeight(100).setWidth(400).setStyleAttribute("background-color","beige");
var panel = app.createVerticalPanel();
var next = app.createButton('next').setWidth('180');
var chkmode = app.createCheckBox("moving mode (checked = up/dwn, unchecked=L/R)").setValue(false).setName('chkmode');
var cellvaluestring = sh.getActiveRange().getValue().toString();
var label = app.createHTML('<p>' + cellvaluestring + '</p>').setId('label');
panel.add(next).add(chkmode).add(label);
var handler = app.createServerHandler('click').addCallbackElement(panel);
next.addClickHandler(handler);
app.add(panel);
ss.show(app);
}
//
function click(e) {
var app = UiApp.getActiveApplication();
var activeline = sh.getActiveRange().getRow();// get the row number of the selected cell/range
var activecol = sh.getActiveRange().getColumn();// get the row number of the selected cell/range
var cellvaluestring = sh.getActiveRange().getValue().toString();
var label = app.getElementById('label');
label.setHTML('</p>'+cellvaluestring+'</p>');
var chkmode=e.parameter.chkmode;
if(chkmode=="true"){
activeline++
}else{
activecol++}
var sel=sh.getRange(activeline,activecol);
sh.setActiveSelection(sel);// make the next row active
return app;
}