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

时间:2017-12-30 02:11:08

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

我正在尝试使用此StackOverflow问题How to pass url parameter value into string filter input in Google visualization 将网址参数传递给我使用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'
     }
    }

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

1 个答案:

答案 0 :(得分:0)

好吧,我想出了一个使用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