Google脚本从Google表格单元格中提取动态HTML iFrame

时间:2017-10-19 19:21:57

标签: google-apps-script google-sheets

我正在努力将Google表单作为iFrame合并到我的Google电子表格上的模态对话框中(它已经可以通过客户菜单访问),其中iFrame代码会根据电子表格中的内容动态更改。< / p>

我引用HTML文件的Google脚本是:

    //Help Guide 
    function openHelp() { 
    var html = HtmlService.createHtmlOutputFromFile('Help Guide').setHeight(560).setWidth(814.81).setSandboxMode(HtmlService.SandboxMode.IFRAME); 
    SpreadsheetApp.getUi().showModalDialog(html, ' ');
}

当我将生成的iFrame代码粘贴到HTML文件“帮助指南”中时,会根据需要加载。但是,当我从菜单中运行openHelp()函数时,我想改为引用我在Sheet1!C1上的iFrame代码。这样我就可以根据电子表格动态更改iFrame。我已经探索过使用Google的HTML模板服务,但一直未能弄明白。

我确信脚本非常简单,但我不熟悉HTML文件中需要编写哪些代码来从Sheet1中提取生成的iFrame代码!C1。

谢谢!

1 个答案:

答案 0 :(得分:0)

从电子表格中的单元格中获取一些HTML代码

  1. 您需要更新变量iframeSheet和iframeCell。
  2. 创建iframe语句。
  3. 部署为网络应用。 doGet已经存在。您还可以运行showIframeDialog()函数以查看它是否有效。
  4. 守则:

    function getIframeCode() 
    {
    
        var iframeSheet='Sheet1';
        var iframeCell='A1';
        var ss=SpreadsheetApp.getActive();
        var sh=ss.getSheetByName(iframeSheet);
        var hl=sh.getRange(iframeCell).getValue();
        return hl;
    }
    
    function showIframeDialog()
    {
      var ui=HtmlService.createHtmlOutputFromFile('iframecode');
      SpreadsheetApp.getUi().showModelessDialog(ui, 'Dynamic Iframe')
    }
    
    function doGet()
    {
      var ui=HtmlService.createHtmlOutputFromFile('iframecode');
      return ui.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
    }
    

    iframecode.html文件:

    <!DOCTYPE html>
    <html>
      <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
      <script>
        $(function() {
            google.script.run
              .withSuccessHandler(updateIframeCode)
              .getIframeCode();
          });
        function updateIframeCode(hl)
        {
          document.getElementById("iframe").innerHTML=hl;
        }    
        console.log("My code");
      </script>
      </head>
      <body>
      <div id="iframe"></div>
     </body>
    </html>