2016-08-28 4 views
1

내가 일하는 회사 내부에서 사용할 작은 예약 웹 앱을 작성해야합니다. Google Apps Script (GAS)를 사용해보기로 결정했습니다. 요컨대, 사용자는 목록에있는 장비를 선택하여 사용하려는 날짜와 그의 ID (이 작은 시스템은 완전한 CRUD를 구현해야 함)와 함께 제출할 수 있어야합니다.웹 앱에 대한 액세스

환경 :

  • 인터페이스는 응용 프로그램이 단지 회사의 도메인의 구성원에 액세스 할 수 있습니다 응용 프로그램
  • 웹으로 게시 가스로 만든 데이터베이스로
  • 구글 스프레드 시트,하지만 난 내 개인 계정에서 지금 개발하십시오.

모든 것이 잘 동작합니다. 그런 다음 웹 앱으로 배포합니다 (Execute app as : Me, 누가 앱에 액세스 할 수 있습니까 : 누구든지). 누구든지 링크에 액세스하면 사용자 정보 (Session.getActiveUser(). getEmail())를 검색 할 수 없습니다. 항상 개발자 정보 (내 정보)를 검색합니다. '앱 실행'에서 '앱에 액세스하는 사용자'로 전환하면 앱이 데이터베이스의 역할을하는 스프레드 시트에 액세스 할 수 없습니다. 개발 환경에서는 정상적으로 작동합니다.

나머지 웹 앱이 정상적으로 작동합니다. 나는 방금 자동 예약 방식으로 누가 예약했는지 (이 정보를 입력하도록 요청하지 않고) 신원 (이메일)을 받고 기록하기를 원했다.

사람들이 액세스하기 전에 다른 설정을해야합니까?

미리 감사드립니다.

[편집 1] : 상황이 조금 바뀌 었습니다. 몇 가지 테스트를 더 실시했는데 프로젝트의 새 버전으로 저장하면 배포 된 웹 앱이 업데이트되는 것 같습니다. 어쨌든 여전히 활성 사용자 이메일을 가져올 수 없습니다. 이제 Session.getActiveUser(). getEmail()이 빈 문자열을 반환합니다.

[편집 2] : Sujay Phadke의 답변 bellow에 이어 웹 앱을 회사 환경으로 마이그레이션하려고 시도했습니다. 그것은 매력처럼 작동했습니다.

줄리아노

답변

1

그것은 잘 여기 문서화 : getActiveUser

웹 애플리케이션의 권한으로 설정하는 경우, 반환 된 사용자 ID 문자열이 비어있을 것으로 보인다 "내게로 실행". 또한 여기에 언급 된 특정 도메인 권한에 따라 다릅니다.

+0

@Sujay Phadke의 링크를 읽었습니다 : "(...) 간단한 onOpen (e)처럼 스크립트가 해당 사용자의 승인 없이도 실행될 수있는 어떠한 환경에서도 사용자의 이메일 주소를 사용할 수 없습니다. 또는 onEdit (e) 트리거, Google 스프레드 시트의 맞춤 기능 ** 또는 '나를 대신해 실행 **'(즉, 사용자 대신 개발자가 승인 한) 배포 된 웹 앱 ** 그러나 이러한 제한은 일반적으로 개발자와 사용자가 동일한 Google Apps for Business 도메인 ** ._ "에 속한 경우에는 적용되지 않습니다. – jpavel

+0

필자는 TI 관리자가 필요할 경우 보안 정책을 변경할 것을 요청할 수 있기 때문에 회사 환경에서 몇 가지 테스트를 수행 할 것입니다. 고맙습니다. – jpavel

+2

도메인에서 작동 할 것입니다. 문제없이 Google Apps Education 도메인에서 동일한 구성을 사용합니다. webapp은 나를 실행하고, Session.getActiveUser(). getEmail()을 사용하여 최종 사용자 ID를 얻는다. –

관련 문제