0

URL을 통해 입력되거나 전송 된 일부 ID를 기준으로 맞춤형 Google 시트 대시 보드를 제공 할 수있는 방법을 모색합니다.Google 시트 맞춤보고 : 필터 및 개인 정보 보호

설명 : 지금까지 원시 데이터는 마스터 Google 시트에 저장되어 원시 데이터의 필터 역할을하는 ID를 입력해야하는 다른 Google 시트 대시 보드에서 처리되고 요약되어 요약에 통찰력 만 제공됩니다 그 특정 ID 및 사용자와 관련된 - 그것은 작동합니다.

그러나 각 사용자는 자신의 ID 만 입력하고 요약을 확인해야합니다. 현재 모든 사용자는 동일한 공용 시트에 액세스 할 수 있으며 병렬 액세스 가능성에 문제가 있습니다.

템플릿을 기반으로 개별 시트 (사용자 당 하나씩)를 생성하려면 어떻게해야합니까? 기본 기능 또는 Apps Script로이 기능을 사용할 수 있습니까? 어떤 조언을 주셔서 감사합니다, 감사합니다!

+0

Apps Script Web App을 만드는 것이 좋습니다. 이미 대시 보드가있는 것 같습니다. HTML로 만든 대시 보드입니까? 그렇다면 Web App에서 그 중 일부를 재사용 할 수 있습니다. 한 사용자가 다른 사용자의 것을 보지 않고도 여러 사용자가 동일한 웹 응용 프로그램을 열어 둘 수 있습니다. 각각의 열린 인스턴스는 그 사람이 유일 할 것입니다. 웹 응용 프로그램을 만들려면 "독립 실행 형"Apps Script 파일을 사용하십시오. 현재 Apps Script 코드는 스프레드 시트에 "바인딩"되어있을 수 있습니다. –

+0

감사 샌디! 그 점에 대해 자세히 설명해 주시겠습니까? 그 Apps Script는 어떻게 생겼습니까? 현재 대시 보드는 기본 데이터를 필터링하는 ID를 묻는 Google 시트입니다. Apps Script에서 대시 보드를 만들어야합니까? Google 시트 UI를 사용하여이 기능을 구현하고 Web App 대시 보드에 위젯을 전달/전달하는 쉬운 방법이 있습니까? 다시 한 번 감사드립니다! –

+0

내가 제안하는 바에 따르면 HTML, 클라이언트 측 JavaScript 및 CSS를 사용해야합니다. HTML로 표를 작성하여 결과를 나열하는 방법을 알아야 할 수도 있습니다. 굉장한 테이블 같은 것을 사용할 수 있습니다. 다음은 Web Apps 용 Apps Script 설명서 링크입니다. [Link - Web Apps] (https://developers.google.com/apps-script/guides/web) –

답변

0

이 시도 할 수있는 하나의 옵션은, 그렇게 같은 구글 스프레드 시트를 여는 사용자의 이메일 ID를 얻을 수 있습니다 :

function onOpen(e) { 

    var email = Session.getEffectiveUser().getEmail() 
    var ui = SpreadsheetApp.getUi() 
    ui.alert(email) 
    //doSomethingSpecificBasedOnEmail(email) call function that fliters data based on email ID 
} 

참고 : Session.getEffectiveUser를 사용하는 몇 가지 뉘앙스가()가 있습니다. 허가 및 보안 설정에 따라 빈 사용자/전자 메일을 제공 할 수 있습니다. https://developers.google.com/apps-script/reference/base/session#getActiveUser()

두 번째 옵션 : 이메일 ID이 옵션을 선택하지 않습니다 및 경우 사용자가 데이터에 액세스 할 수있는 ID를 입력하여 확인하기 때문에. 이 코드는 ID를 요청하고 template이라는 시트 복사본을 만들고 ID 값으로 A1 값을 설정합니다. 그러면 시트는 ID를 사용하여 ID 관련 데이터를 얻고 플롯을 만듭니다.

function onOpen(){ 
    var ui = SpreadsheetApp.getUi(); 
var response = ui.prompt('Get ID:'); 

// Process the user's response. 
if (response.getSelectedButton() == ui.Button.OK) { 
    var id = response.getResponseText(); 
    var ss = SpreadsheetApp.getActive() 
    var lookupSheet = ss.getSheetByName(id) 
    if(lookupSheet == null){ 
    var template = ss.getSheetByName("Template") 
    var newSheet = template.copyTo(ss) 
    newSheet.setName(id) 
    newSheet.getRange(1,1).setValue(id) 
    newSheet.activate() 
    } else 
    { 
    lookupSheet.activate 
    } 
} else { 
    Logger.log('The user clicked the close button in the dialog\'s title bar.'); 
} 
} 

이의 예는 여기에서 찾을 수 있습니다 : https://docs.google.com/spreadsheets/d/1RPHUGKi7u9jJVc-3xCaYlrZ8kaHWvpl6gPZxUL1g32Y/edit?usp=sharing

참고 : 사람들은 내가 귀하의 게시물을 기반으로하는 것은 문제가되지 않습니다 생각하는, 그러나 서로의 시트를 볼 수 있습니다. 그러나 그 경우가 아니라면 Google Web App 스크립트를 사용하는 것이 가장 좋습니다.

+0

그러면 모든 사용자가 동일한 도메인 또는 Google에 이메일 주소를 요구하게됩니까? 그렇다면, 내가 추구하는 것을 제한합니다. 다른 아이디어? –

+0

잘 새로운 방법으로 답변을 업데이트했습니다. –

관련 문제