Google Apps脚本传递网址参数Google信息中心

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Apps脚本传递网址参数Google信息中心相关的知识,希望对你有一定的参考价值。

我正在尝试使用此StackOverflow问题How to pass url parameter value into string filter input in Google visualization 将URL参数传递给我使用Mogsdad的excellent writeup创建的Google信息中心。

仪表板工作得很好,但我无法传递参数,例如来自URL的?state=Texas用作内容过滤器。只要我在javascript.html文件中调用该函数,仪表板就无法绘制:

var stateFilter = stateurl('state'); //if I use this ANYWHERE in the html file, the dashboard fails

    function stateurl(variable){ //in tests this works fine on its own
     var url = ScriptApp.getService().getUrl(); 
     var vars = url.split("&");
     for (var i=0;i<vars.length;i++) {
      var pair = vars[i].split("=");
      if(pair[0] == variable){
       return pair[1];
      }else return 'Texas'
     }
    }

这样做的目的是使我的同事能够轻松创建最常用的过滤器/刷新快捷方式。

答案

好吧,我想出了一个使用HTML的解决方法(我比javascript更糟糕!)因此它可能不是最好的,但它的工作原理。在doGet函数中,我添加了这两行(切换到城市与州):

function doGet(e) {

  var template = HtmlService.createTemplateFromFile('Index');

  var city = e.parameter.city; //grab city parameter

  template.city = city; //build template, then proceed as usual

  // Build and return HTML in IFRAME sandbox mode.
  return template.evaluate()
      .setTitle("KPIs")
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

然后我将这个简单的div添加到Index.html(对我来说,我将css样式设置为display:none)

<div id="cityname"><?=city?></div>

然后在我的仪表板功能中,我指的是div:

var city = document.getElementById('cityname').innerHTML;
if (city=="undefined"){
var city = "Austin";}

这对我来说是回答它,但其他人当然可能有更好的JS修复。我使用此策略添加其他可能的过滤器,只需在doGet中复制其他参数的两行。

有关更多信息,请参阅

Pass URL parameter into Web App script

How to pass url parameter value into string filter input in Google visualization

以上是关于Google Apps脚本传递网址参数Google信息中心的主要内容,如果未能解决你的问题,请参考以下文章

如何调试Google Apps脚本(又名Logger.log登录到哪里?)

将身份验证从一个 Google Apps Script webapp 传递到另一个 Google Apps Script webapp

如何调试 Google Apps 脚本(又名 Logger.log 记录到哪里?)

使用 Google Apps 脚本将查询中的数据加载到 Big Query - 缺少必需参数

Google Apps 脚本/JDBC/MySQL

Google Apps 脚本正则表达式返回 null(数据抓取)(谷歌表格)