2012-10-28 6 views
4

액세스하는 사용자로 실행되는 모든 사용자가 볼 수있는 웹 애플리케이션으로 게시 된 Google Apps Script 프로젝트를 만들었습니다. 나는 그러나,웹 애플리케이션에서 액세스 한 라이브러리의 ScriptDb

function getDb() { 
    return ScriptDb.getMyDb(); 
} 

function save(props) { 
    return getDb().save(props); 
} 

내가 (Gmail에 액세스하는 시간 기반 트리거를 사용하여) 사용자 접근에 따라 실행 한 웹 애플리케이션을하려는 :

이 웹 애플리케이션은 다음과 ScriptDb에 액세스하는 방법을 가지고 도서관 프로젝트를 포함 ScriptDb을 사용하여 웹 애플리케이션을 실행하는 사용자와 독립적으로 데이터를 저장하려고합니다.

You do not have access to library MyDBLibrary, used by your script, or it has been deleted.

내가 잘못 아무것도 건가요 : 그래서 나는 Google 애플리케이션 스크립트 문서에서 장 Centralizing a Place to Get a Database Instance가 웹 애플리케이션에 액세스 할 때 그러나 나는 다음과 같은 오류가 발생하고, 여기에 적용 생각? ScriptDb는 웹 애플리케이션에서 액세스 할 때 사용자와 독립적으로 실행되지 않습니까?

답변

4

호세샤 - 설정이 올바르지 만 신고 한 모든 것을 재현했습니다. 당신이 놓친 마지막 것은 공공 도서관 프로젝트 자체를 공유하는 것입니다. >은 "액세스 권한"섹션에서 공유 3. 설정할 사람에게 링크 -

그렇게하는 방법은 1. 파일로 스크립트 편집기 2.에서 라이브러리 프로젝트입니다 보기 (편집 필요 없음) 할 수 있습니다. 이없이

Sharing settings

는 애플리케이션 스크립트는 이제 대중에게 라이브러리 코드를 제공하기 위해 확인을 알 수 있습니다. 희망이 도움이됩니다.

+0

트릭을 만들었습니다. 사용하는 스크립트의 소유자 인 사람에게 액세스 권한을 부여하는 것으로 충분하다고 생각했습니다. 누구와도 공유하고있는 링크가 있습니다 ... 음 ... 프로젝트 키를 게시하지 않는 한 보안 위험이 아닌 것 같습니다. 맞습니까? – Joscha

+0

ScriptDb 인스턴스는 프로젝트 전용입니다.모든 ScriptDb 액세스 메소드가 적절하게 범위가 지정되었는지 확인하십시오 (마지막에 '_'를 추가하여 메소드를 라이브러리에서 비공개로 만들 수 있음). 이 방법은 코드가 다른 사람이 액세스 할 수있는 경우에도 프로젝트 키를 받으면 데이터에 액세스 할 수 없으며 프로젝트에서 가져 오더라도 ScriptDb 인스턴스에 액세스 할 수 없습니다. –

-1

작동 시키려면 development mode 플래그를 켜야 할 수 있습니다.

다음은 내가 한 일입니다.

  1. 사용자 A가하십시오 Master 스프레드 시트를 작성하고 응용 프로그램 스크립트를 생성 및 버전 1.0으로 저장.
  2. 사용자 A :이 시트에 대한 액세스 권한을 사용자 B에게 부여하여 일반 앱 스크립트를 사용할 수 있도록하십시오.
  3. 사용자 A : 사용자 B에게 프로젝트 액세스 키를 제공하십시오. 4. 사용자 B : 스프레드 시트를 만들고 리소스 library with project key을 추가했습니다.
  4. 사용자 B : 선택한 버전 1.0.
  5. 사용자 B : development mode을 켭니다.

참고 : 나는 5를 통해 1 단계를 따르는 경우, 그럼 난 아직도 권한이 없습니다 또는 스크립트가 삭제 된 말 같은 오류를 참조하십시오. 그러나 6 단계를 수행하면 오류가 해결되고 공유 스크립트를 사용할 수 있습니다.

관련 문제