我正在尝试使用此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'
}
}
这样做的目的是让我的同事能够轻松创建最常用的过滤器/刷新快捷方式。
答案 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