2014-07-08 4 views
2

Google 사이트가 있다고 가정 해 봅니다. 사이트에는 스프레드 시트에 가젯이 있습니다. 가제트가 사이트를 보는 사람의 사용자 이름을 기반으로 스프레드 시트에서 특정 행 하나를 표시하도록합니다. GAS로 가능합니까?Google 스프레드 시트의 사용자 이름을 기반으로 특정 행을 봅니다.

업데이트 :

function onOpen() { 
    var ss = SpreadsheetApp.openById("abcdefg123456789"); 
    var first = ss.getSheetByName("first"); 
    var maxRows = first.getMaxRows(); 
    var email = Session.getActiveUser().getEmail(); 

    //show all the rows 
    first.showRows(1, maxRows); 

    var data = first.getRange('A:A').getValues(); 

    //iterate over all rows 
    for (var i = 0; i < data.length; i++) { 
     if (data[i][0] !== email) { 
      first.hideRows(i + 1); 
     } 
     if (data[i][0] === "") { 
      return; 
     } 
    } 
} 
이 코드

문제, 또는 어쩌면, 가스에 문제의 나는 그것이 사이트에 게재 얻을 수 없다. 이 코드를 스프레드 시트에 연결하고 열 때 (내 이메일 주소가없는 모든 행을 숨김) 예상 한대로 처리합니다. 그러나 동일한 스프레드 시트를 Google 사이트에 연결하면 코드가 실행되지 않는 것처럼 보이고 창이 다른 모든 행을 계속 표시합니다.

+0

아래 답변은 완전하지 않습니다. 더 많은 노력을 기울이면 (즉, 시도한 코드와 시도한 코드가 무엇인지), 현재의 대답에 내 의견을 게시하십시오. –

+0

그래, 지금은 약간의 코드가 있지만 원하는 것은 수행하지만 문제는있다. 나는 그것을 포함하기 위해 메인 포스트를 편집 할 것이다. – Lillz

+0

ok 답변에 대한 답변을 –

답변

1

을 원하는 응용 프로그램 스크립트 가젯을 포함한다. 이 기술은 Romain의 가젯에 Romain의 Row-level permissions 부록에 나와 있습니다 (찾고있는 작업을 수행하는 작업 코드와 함께).

+0

Mogsdad를 구출합니다! 신난다, 이것은 내가 원했던 정확하게 것이다. 가젯을 사이트에 올리면 전체 웹 페이지를 새로 고치지 않고 표를 새로 고치는 방법이 있는지 알고 있습니까? – Lillz

+0

항상 도와 줘서 기쁩니다! 그대로, 새로 고침 - 가제트는 AJAX와 유사한 동작을 통해이를 지원해야합니다. 어쩌면 @ Romain-Vialard가 그것을 추가 할 수 있습니까? 나는 [URL Redirector Gadget] (http://www.k8oms.net/refresh)을 사용해 봤지만 실제로는 전체 페이지를 새로 고쳐서 짜증나게한다. – Mogsdad

0

나는 그렇게 생각하지 않는다. '열어'스크립트를 할 필요가 있고 가제트는 트리거를 실행하지 않는다.

당신은 1. 현재 활성 사용자 2가로 스크립트를 게시 사이트 페이지

에 대한 스프레드 시트 3. 반환 HTML의 데이터를 조회 얻을 수있는 사이트에 대한 응용 프로그램 스크립트를 만들 수 있습니다 웹 애플리케이션, 사용자 실행중인 응용 프로그램으로 실행이

는 스프레드 시트와 가제트 사이에 웹 응용 프로그램 프록시를 사용할 수있는 HTML을

+0

에 추가했습니다.이 웹 응용 프로그램 (uiapp 또는 htmlapp)을 사용하십시오. 그러나 실행중인 사용자로 게시 할 필요없이 소유자 ("나")로 실행되도록 게시 할 필요가 없습니다. 그런 식으로 사용자에게 읽기 액세스 권한을 부여해야 할 필요조차 없습니다. 또한 모든 사용자가 동일한 도메인에 있다고 가정 할 때 인증을 단순화합니다. 그렇지 않으면 사용자 이메일을 가져올 수 있도록 "앱을 실행하는 사용자"로 실행해야합니다. –

+0

Ok. 그래서 저는 이메일과 셀을 변수에 저장하는 방법을 알고 있습니다. 그러나 그 정보를 상자 나 사이트 내부에 밀어 넣는 방법을 모르겠습니다. 코드 프로젝트에서 html 파일을 만들어야한다는 것을 알고 있지만 사이트에 표시 할 변수를 얻는 것이 확실하지 않습니다. – Lillz

+0

그래, 나는'

'을 html 파일에 넣고'document.getElementById ("score2")를 넣었다. innerHTML = "점수가 + +; 사용자의 이메일과 관련된) 그러나 webapp로 실행하려고하면 google은 아무 것도 반환하지 않는다고 말합니다 – Lillz