2017-12-30 13 views
0

이 StackOverflow 질문 How to pass url parameter value into string filter input in Google visualization 을 사용하여 URL 매개 변수를 Google 대시 보드에 전달하려고합니다. Mogsdad의 excellent writeup을 사용하여 만들었습니다.URL 매개 변수를 전달하는 Google Apps 스크립트 Google 대시 보드

대시 보드는 훌륭하게 작동하지만 매개 변수를 전달할 수 없습니다 (예 : ?state=Texas을 URL에서 가져와 콘텐츠 필터로 사용합니다. 마자 내 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

내가 Google 애플리케이션 스크립트 API와 그 익숙하지 않아요하지만 당신은 확인 할 수 있습니다 경우 ScriptApp.getService ('에 의해 반환 된 값) .getUrl()'은'? '문자를 포함합니다. 그렇다면 ** if ** 문에서 조건부를 살펴 보는 것이 좋습니다. – camelCaseD

답변

0

그래, 나는 HTML을 사용하여 해결 방법을 알아 냈다. (나는 자바 스크립트보다 더 나쁘다!) 그래서 아마도 최선은 아니지만 작동한다.

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); 
} 

그런 다음 나는 Index.html을이 간단한 DIV를 추가 (나를 위해 내가 디스플레이로 CSS 스타일 설정 : 없음)을

나는이 두 줄을 추가 한의 doGet 기능에서 (상태 대 도시로 전환)
<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

관련 문제