0

我正在创建一个脚本,该脚本使用 createHTML 将数据写入小工具,但由于某种原因,当我使用变量时,没有任何内容写入小工具,直接插入文本效果很好,即 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;
}

我认为当将电子表格中的值读入变量时,数据类型不是字符串而是对象或其他东西,但我不确定。如果是这种情况,是否有人知道如何将数据类型转换为字符串或其他解决方法?

预先感谢您的帮助。

4

2 回答 2

1

你的代码看起来不错。您确定执行正在进入 else{} 部分吗?您提到数据类型可能不是字符串。要将某些内容转换为字符串,您可以使用 toString() 方法。

例如:

about.toString() 
于 2012-07-11T15:22:04.173 回答
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;
 }
于 2012-07-11T21:58:53.410 回答