【问题标题】:How to pass values from ScriptDb to Google Sites gadget如何将值从 ScriptDb 传递到 Google 协作平台小工具
【发布时间】:2013-09-29 00:37:18
【问题描述】:

我有一个带有嵌入式 Apps 脚本小工具的 Google 协作平台页面。在页面上,我想在单击按钮时显示 ScriptDb 数据。

我的问题是:如何将 ScriptDb 结果传递给嵌入在我的小工具中的 JavaScript?

这是我的来源:

[示例代码.gs]

function doGet() {
  // return template page
  return HtmlService
      .createTemplateFromFile('Sample-HTML')
      .evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .getContent();
}

// assume db contains 10 'records'
function getData(query) {
  var db = ScriptDb.getMyDb(); 
  var data = db.query(query);
  Logger.log(data.getSize()); // returns '10.0'
  return data; // makes showData think this is null
}

[示例-HTML.html]

<?!= include('Sample-JavaScript'); ?>

<input type="button" value="show data"
    onclick="google.script.run
    .withSuccessHandler(showData)
    .getData({})" />

[示例-JavaScript.html]

<script>
function showData(db_query_result) {
alert(db_query_result); // returns null.
}
</script>

【问题讨论】:

  • ScriptDB 已被弃用

标签: google-apps-script google-sites


【解决方案1】:

db.query() 返回的值是the documentation 中定义的对象,不能直接在您的 UI 中使用,您应该以可以在页面中显示的格式返回值:字符串或数组字符串。

我没有测试,但这应该可以:

function getData(query) {
  var db = ScriptDb.getMyDb(); 
  var result = db.query(query);
  Logger.log(result.getSize()); // returns '10.0'
  var results = db.query({type: 'person'});
  var data = [];
  while (results.hasNext()) {
   data.push(results.next());
  }
  return data; // data is an array of results
}

【讨论】:

  • 谢谢,我猜这家伙不会再出现了.. 13 年 9 月 ;-)
  • 非常迟到的谢谢,Serge :) 不太了解 stackoverflow 的礼仪。谷歌拔掉了 ScriptDb 的插头,现在桥下的一切都是水。
  • 谢谢(迟到总比没有好:-),是的,不幸的是……,我有点喜欢它;)
猜你喜欢
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多