3

난 그냥 부가 새 Gmail 구축을 시도하기 시작하고, 다음과 같은 오류 메시지로 실행하고 있습니다 :권한 오류가 부가

를 "당신은 가져 오기를 호출 할 수있는 권한이 없습니다"

스크립트 편집기에서 추가 기능을 테스트 할 때 발생하며 내 Gmail에도 배포 할 때 발생합니다. 다음은 코드 샘플입니다.

function getContextualAddOn(e) { 
    var API_KEY = 'TESTKEY'; 
    var URL = 'https://[REDACTED]'; 
    var options = { 
     'method' : 'post', 
     'contentType': 'application/json', 
     'headers': { 
      'x-api-key': API_KEY 
     }, 
     'payload' : JSON.stringify({ 'foo': 'bar' }) 
    }; 

    var response = UrlFetchApp.fetch(URL, options); 

    [more code that builds a card] 
} 

위와 같이 UrlFetchApp.fetch를 매우 간단하게 사용할 수 있습니다. AppsScript의 새로운 기능이므로 내 매니페스트에서 사용 권한 선언 또는 범위가 누락되었습니다. 나는 UrlFetchApp.getRequest를 사용하는 단순한 예제를 시도했지만 "getRequest를 호출 할 수있는 권한이 없습니다"와 함께 실패했습니다.

부가 기능에 대한 매니페스트의 예에서와 동일합니다

{ 
    "timeZone": "America/New_York", 
    "dependencies": { 
    }, 
    "exceptionLogging": "STACKDRIVER", 

    "oauthScopes": [ 
    "https://www.googleapis.com/auth/gmail.addons.execute","https://www.googleapis.com/auth/gmail.addons.current.message.readonly", "https://www.googleapis.com/auth/userinfo.email" 
    ], 
    "urlFetchWhitelist": [ 
    "https://[REDACTED]" 
    ], 
    "gmail": { 
    "name": "Test Add-On", 
    "logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/receipt_black_24dp.png", 
    "primaryColor": "#4285F4", 
    "secondaryColor": "#4285F4", 
    "contextualTriggers": [{ 
     "unconditional": {}, 
     "onTriggerFunction": "getContextualAddOn" 
    }], 
    "version": "TRUSTED_TESTER_V2" 
    } 
} 

는 UrlFetchApp을은 Gmail을 추가 기능 내에서 허용하기로, 또는이 단지 버그는 있습니까? 내 매니페스트에 뭔가를 추가하거나 스크립트 편집기에서 다른 옵션을 사용하도록 설정해야합니까?

+0

onOpen 또는 onEdit처럼 [Simple Trigger] (https://developers.google.com/apps-script/guides/triggers/)에서 URL 가져 오기를 실행 해 봅니다. 이 해결 방법은 [SO 게시물] (https://stackoverflow.com/questions/20457847/urlfetch-in-an-event-failing) – noogui

+0

에서 작동하는 것으로 보입니다. Gmail 추가 기능을 설정하는 방법에 대해 알고 싶습니다. 문맥 적 트리거 만 있다고 생각합니다. –

답변

9

UrlFetchApp 서비스에는 추가 범위 인 https://www.googleapis.com/auth/script.external_request이 필요합니다. 범위 목록에 추가하면 코드가 작동합니다. 현재 서비스에서 범위로의 매핑은 잘 문서화되어 있지 않지만, 파일> 프로젝트 속성> 범위에서 매니페스트의 oauthScopes 섹션을 일시적으로 제거하고 코드의 자동 결정된 범위를 보는 것으로 확인할 수 있습니다.

+1

고마워요! 이것은 정확히 놓친 것입니다. –