본문 바로가기

기타

구글 앱스크립트에서 onEdit 권한 에러(?) 해결 방법

 

구글 앱스크립트에서 다음과 같은 에러가 계속 발생하면서 정상적으로 작동이 안되었다. 

 

API 호출 중 오류 발생: UrlFetchApp.fetch을(를) 호출할 수 없습니다. 다음 권한이 필요합니다. 
https://www.googleapis.com/auth/script.external_request

 

권한 문제로 "UrlFetchApp.fetch"를 호출 할 수 없다는 말을 그대로 해석하여 ChatGPT와의 API 쪽 문제인 줄 알고, 그 쪽으로만 주구장창 고민을 하고 있었다. 

 

그런데, 알고 보니 이게 onEdit 사용 시 권한 에러가 발생하여 실행이 안 된 것이라고 한다. 

 

그걸 이렇게 표현해 놓았다. 

 

onEdit()와 같은 심플 트리거(simple trigger)는 승인이 필요한 서비스에는 엑세스 할 수 없어 
외부에 호출하는 api는 사용할 수 없다. 


해결 방법은 외부 권한이 필요한 함수 호출 시에는 단순 트리거(simple trigger) 대신 
설치 가능한 트리거(Installable trigger)를 사용하면 된다.

 

너무나 간단한 해결 방법.. "설치 가능한 트리거(Installable trigger)"를 사용하면 된다고 한다. 

 

https://developers.google.com/apps-script/guides/triggers/installable?hl=ko

 

설치 가능한 트리거  |  Apps Script  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 설치 가능한 트리거 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 단순 트

developers.google.com

 

뭔 말인지 모르겠다. 

 

"설치 가능한 트리거"가 뭔가 싶어서 참고 자료 페이지도 읽어 봤지만, 뭔 말인지를 모르겠어서..

 

여기 저기 검색해 보고, ChatGPT한테도 물어 봤지만, 감이 잡히질 않았다. 

 

ChatGPT API 문제인가 싶어서 헤메고.. "설치 가능한 트리거"라는 특별한 무언가가 찾기 위해 헤메고. 

 

그러다, 결국 알게 되었다. 함수 이름을 "onEdit()"에서 "onEdit_modified(임의로)"로 바꾸면 된다는 것을..

 

함수 이름만 바꾸고, 트리거에 추가하고 돌렸더니 너무나도 쉽게 해결이 되었다. 

 

 

반응형