[GAS] 여러 .gs 파일이 있을 때 범위가 자동으로 추가되지 않고 "xxx를 호출할 수 있는 권한이 없습니다"오류가 발생함

4711 단어 GoogleAppsScriptgas

오류가 발생하는 조건



아래와 같이 두 개의 .gs 파일로 나누어 코드를 쓰고 test()를 실행하려고 하면 예외가 나와 실행할 수 없다

폴더로드.gs
const ID_DIR_SUB = "hogehogehogehogehogehogehogehoge";

const Dir_sub = DriveApp.getFolderById(ID_DIR_SUB);

하위 폴더 만들기.gs
function test() {
  let Dir_new = Dir_sub.createFolder("testFolder");
}

해당 오류 문



에러 내용은 아래와 같은 느낌. 보통이라면 처음 실행할 때 자동으로 필요한 스코프를 추가해줄 것이지만, 복수 파일로 하면 새는 것 같다

Exception: You do not have permission to call DriveApp.Folder.createFolder. Required permissions: htps //w w. ㅇㅜㅜㅜㅜ 코 m / 아 th / d 리ゔ
test @ 하위 폴더 만들기.gs:2

했던 일


  • 이전 편집기로 돌아가
  • 매니페스트 파일을 열고
  • 범위를 명시 적으로 기재한다

  • 참고



    Qiita : GAS 오류 "불러올 권한이 없습니다"는 매니페스트 파일에 문제가 있습니다.
    해결 방법 자체는 이쪽이 자세히 있으므로 이쪽을 봐 주시면. 이번 기사는 「복수의 .gs 파일을 만들 경우에 발생하는 상기 에러가 나올 가능성이 높아요」라고 하는 비망으로서 올려 둔다

    해결 방법



    매니페스트 파일을 명시적으로 작성해, 그 곳에서 스코프를 강제적으로 재기록한다.
  • 이전 편집기로 전환
    ※ 프로 퍼디 나 매니페스트 파일을 괴롭히는 메뉴가 새로운 에디터에는 없기 때문에
  • 파일 > 프로젝트 속성 > 범위에서 기존 (자동으로 설정된) 범위를 복사합니다.
    이번에는 drive.readonly 만
  • 보기> 매니페스트 파일보기에서 매니페스트 파일 (appsscript.json)을 엽니 다

  • appsscript.json
    {
      "timeZone": "Asia/Tokyo",
      "dependencies": {
      },
      "exceptionLogging": "STACKDRIVER",
      "runtimeVersion": "V8"
    }
    
  • 스코프에 관한 기술을 추가해, 기존 스코프와 강제적으로 추가하고 싶은 스코프를 기재한다
    ※ 이번에는 원래 설정된 범위가 drive.readonly이므로 drive를 추가하는 것만으로 좋다

  • appsscript.json (변경 후)
    {
      "timeZone": "Asia/Tokyo",
      "dependencies": {
      },
      "exceptionLogging": "STACKDRIVER",
      "runtimeVersion": "V8",
      "oauthScopes":["https://www.googleapis.com/auth/drive"
      ]
    }
    
  • 저장하고 실행하면 오류가 해결되었을 것입니다

  • 후기



    보통 쓰는 분에는 스코프를 자동으로 인식해주는 것 같지만, 할 수 없는 경우는 조금 귀찮아.
    새로운 에디터가 되고 나서 프로젝트의 프로퍼티라든지 스코프라든지 여러가지 볼 수 없게 되어 있는 것은 빨리 어떻게든 해 주지 않을까.

    좋은 웹페이지 즐겨찾기