【问题标题】:Import sheet data into an include file using Google Apps Scriptlets in Google Sheets使用 Google 表格中的 Google Apps Scriptlet 将工作表数据导入包含文件
【发布时间】:2020-04-24 12:11:38
【问题描述】:

在 Google 表格中,我使用 Google Apps 脚本的 HtmlService 创建了一个布局(请参阅下面的 masterPage.html)。

<!DOCTYPE html>
<html>
<head>
  <base target="_top">
  <? var serverData = getServerData(); ?>
</head>

<body>
  <h2>Page begin.</h2>
  <p>Data A from server: <?= serverData[0] ?></p>
  <?!= HtmlService.createHtmlOutputFromFile('includedPage').getContent(); ?>
  <p>Page end.</p>
</body>
</html>

此布局从名为includedPage.html 的第二个布局调用HTML。

<? var serverData = getServerData(); ?>
<div>
  <p>Data B from server: <?= serverData[1] ?></p>
</div>

我可以使用 G.A.S. scriptlet 从服务器/工作表获取数据(“来自服务器的数据 A”)并进入母版页。

但是,当放置在包含的页面中时,相同的 scriptlet 不起作用。代码只是呈现为 HTML,“来自服务器的数据 B” 不会显示。

有没有办法在包含页面插入母版页之前将服务器/工作表导入到包含页面中?

感谢任何帮助。

注意:以下问题与我的问题相关但不回答:

【问题讨论】:

标签: javascript google-apps-script google-sheets


【解决方案1】:

Apps Script scriptlet 仅在脚本执行开始时被评估一次

在您的情况下,使用允许从客户端(html 文件)调用 Apps 脚本函数的 google.script.run 更有意义

示例:

includedPage

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <div id="data"></div>
    <script>
    google.script.run.withSuccessHandler(updateDiv).withUserObject(this).getServerData();
    function updateDiv(returnValue){
      document.getElementById("data").innerHTML="<p>"+ returnValue +"</p>"
    }
    </script>
  </body>
</html>

Code.gs

function getServerData() {
  var serverData = [1, 2, 3, 4, 5];
  return serverData[1];
}

【讨论】:

  • 成功!使用这个新工具,我可以将一个复杂的页面拆分为多个较小的页面,每个页面都可以使用来自服务器的数据(用于表单或表格等),然后再将所有内容组合成最终布局。谢谢@ziganotschka
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多