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 に答える