HTML服务对话框不显示

时间:2015-01-05 23:41:00

标签: google-apps-script google-sheets

我最近才开始使用Google-Apps-Scripts。我想看看是否可以使用第三方JS库在Google-Sheet仪表板的顶部添加时间线。

我的目标是在对话框中添加时间线小部件。我设法让我的对话框显示但没有内容。我希望我想做的事情是可能的。我知道我可以创建一个网站并在其中嵌入Google Doc但是想尝试这个,只是为了好玩。

1)在打开的表格上创建对话框:

function onOpen() {
 var htmlOutput = 
     HtmlService.createHtmlOutputFromFile('cabbages')
     .setSandboxMode(HtmlService.SandboxMode.IFRAME)
     .setWidth(1500)
     .setHeight(600);
 SpreadsheetApp.getUi().showModelessDialog(htmlOutput, 'bla');
}

2)cabbages文件显示基于库的时间轴:

  <div>
  <script>
  function getContent(css, js) {
    return HtmlService.createHtmlOutputFromFile(css).getRawContent();
    return HtmlService.createHtmlOutputFromFile(js).getRawContent();
     }
     getContent(timeLineCSS,timeLineJS);
</script>

  <div id="mytimeline"></div>

  <script type="text/javascript">
    // DOM element where the Timeline will be attached
    var container = document.getElementById('mytimeline');

    // Create a DataSet with data (enables two way data binding)
    var data = new vis.DataSet([
      {id: 1, content: 'item 1', start: '2013-04-20'},
      {id: 2, content: 'item 2', start: '2013-04-14'},
      {id: 3, content: 'item 3', start: '2013-04-18'},
      {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'},
      {id: 5, content: 'item 5', start: '2013-04-25'},
      {id: 6, content: 'item 6', start: '2013-04-27'}
    ]);

    // Configuration for the Timeline
    var options = {};

    // Create a Timeline
    var timeline = new vis.Timeline(container, data, options);
  </script>
  </div>

要链接到时间库JS和CSS文件,我在这里发布了帖子:Use project Javascript and CSS files in a Google Apps Script web app?

我选择了最高投票的答案而非选择的答案。

所以我的app脚本库中有另外两个“html”文件:

timeLineJS:

<script>
// lots and lots of JS here
</script>

timeLineCSS

<style>
// lots of CSS here.
</style>

我现在刷新工作表并显示对话框,但没有内容。这是我右键单击对话框时控制台的屏幕截图: enter image description here

您可以看到“mytimeline”div和“cabbages”文件的内容。但是对话框是空的。

我能想到的是JS和CSS没有通过链接加载。 Google-Apps-Script是否存在加载外部文件的问题?

1 个答案:

答案 0 :(得分:0)

现在尝试使用NATIVE而不是IFRAME。

显然它是非常有缺陷的ATM,我脚本的很大一部分都是用IFRAME来表现的。

编辑: 只是摆弄你的代码。谷歌确实有外部限制,因为安全问题,它的名字是caja,你可以测试你的代码是否能正常使用它:

https://caja.appspot.com/

很明显,vis.js并不能很好地适应它。