使用来自经典 google 站点的参数调用应用脚本

Invoke app scripts with parameters from classic google site

这与我的一个问题有关 posted previously

我有一批 CSV 文件,其中包含从问题跟踪工具获得的数据集。这些我已经上传到 google 驱动器,并以来自 google 网站的图表和列表的形式呈现。

这工作得很好,因为我现在要做的就是更新 google 驱动器中的文件,站点会自动更新。

显示的图表效果很好,但我想将列表显示为 HTML table(而不是嵌入的 sheet)。

应用脚本似乎是最合乎逻辑的方式。但是,为了做到这一点,我需要将包含数据的 sheet 的 URL 提供给应用程序脚本。事实证明这比我预期的要难。

我尝试通过直接链接应用程序脚本 URL (xxxxxx/exec?source=yyyy) 来将数据源作为参数传递,但是 google 站点中的应用程序脚本小工具没有'传递参数。

我尝试将脚本 URL(带有参数)嵌入到 iframe 中 - 正如其他地方所建议的那样,但没有成功。

有人有什么建议吗?谢谢

Google Apps 脚本小工具不能在小工具设置中包含参数,而是将参数添加到 link 到 Google 站点页面

https://sites.google.com/sites/mysite/mypage?par1=A&par2=B

关于具有相同 Google Apps 脚本小工具的多个实例可能是个问题。我认为更好的方法是复制脚本并为每个脚本制作一组不同的参数。

循序渐进

  1. 创建站点
  2. 创建脚本
  3. 添加gs码

    在这种情况下,如果 URL 参数 message 等于 true,则代码从具有显示 Hellow World! 的打印件的文件创建模板,否则它显示 undefined.

    function doGet(e) {
      var template = HtmlService.createTemplateFromFile('Index');
      if(e.parameter.message === 'true') template.message = 'Hello World!';
      var output = template.evaluate();
      return output;
    }
    
  4. 创建一个 HTML 文件并添加 HTML 代码

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
      <body>
        <p><strong>Message:</strong>&nbsp;<?!=message?></p>
      </body>
    </html>
    
  5. 发布您的网络应用程序

  6. 创建页面
  7. 插入 Google Apps 脚本小工具
  8. 保存页面
  9. 在浏览器地址栏或link

    中写入页面URL及所需参数

    https://sites.google.com/a/rubenrivera.mx/ejemplos/posts/1?message=true

对于嵌入在经典 google 站点中的应用程序脚本 Web 应用程序,查询字符串参数效果很好。相反,如果嵌入到新的 google 站点中则不起作用,这是一个大问题,意味着无法迁移使用 querystring 的经典网站,并且很快经典 google 站点将停止工作。