소개
home

구글 앱스 스크립트 쿼타(Quota) 이해하기

작성일
12/26/2021, 1:24:00 PM
작성자
태그
구글시트
스크립트
Quota
샘플링크
Empty
난이도
☆☆
수정일
2/14/2022, 6:39:00 AM
수정자
Empty

목적

구글 앱스 스크립트의 쿼타(Quota)가 무엇인지, 프로젝트에서 어떤 점들을 고려해야하는지 이해합니다.

구글 앱스 스크립트 쿼타 (Quota)란?

구글 앱스 스크립트로 규모가 있는 프로젝트를 진행하려면 쿼타를 이해하고 있어야 합니다. 구글에서 스크립트를 실행할 때의 제한 조건이라고 볼 수 있는데, 쿼타는 아래 북마크에서 확인할 수 있습니다.
Apps Script services have daily quotas and limitations on some features. If you exceed a quota or limitation, your script throws an exception and execution stops.
스크립트를 실행하는 여러 부면에서 제한 조건들이 있습니다. 대표적으로 다음과 같은 것들이 있습니다.
스크립트당 실행 시간
트리거 실행 시간 합계
예약한 트리거 수
일 이메일 발송 수
@gmail 인 무료 계정과 워크스페이스 계정의 쿼타는 다르게 설정된 것도 있고, 동일한 것도 있습니다.
쿼타가 중요한 이유는, 프로젝트의 성공여부를 떠나 프로젝트를 진행할 수 있는지를 결정하기 때문입니다.
개발이 안되는 것이 어디있어? 돈과 시간만 있으면 할 수 있지?
라고들 하지만, 구글 앱스 스크립트에서는 통하지 않는 경우들이 종종 있습니다.
이번 노하우에서는 실제 프로젝트를 통해 확인한 쿼타 제한과 일부 제한을 우회하는 방법에 대해서 소개합니다.

스크립트당 실행 시간 쿼타와 우회 방법

스크립트당 실행 시간 (Script Runtime) 은 무료 계정이나 워크스페이스 계정이나 모두 스크립트당 6분으로 제한이 되어 있다고 공지하고 있습니다.
하지만 변경의 여지를 두고 있는데, 실제 프로젝트에서 검증해보았을 때에도 공지된 것과는 다른 점이 발견되곤 하였습니다.
All limits are subject to elimination, reduction, or change at any time, without notice.
우선, 무료 계정은 6분 제한이 정확하게 적용됩니다. 360초가 되면 스크립트 실행시간 초과로 중지됩니다. 이 경우에는 코드를 어떻게 짜두었는지에 따라 다르지만, 해당 스크립트에서 수행한 작업 전체가 무효화될 수도 있습니다.
하지만 워크스페이스 계정은 6분 제한이 엄격하게 적용되지 않는 것으로 보입니다. 오토오피스에서 프로젝트를 진행한 한 고객사는 구글 워크스페이스 계정을 50개 이상 사용하고 있었는데, 20분까지도 스크립트가 실행되었습니다. 해당 고객사의 최대값은 30분으로 확인하였습니다.
그렇지만, 워크스페이스 계정을 10개 정도 사용하는 또 다른 고객사의 경우에는 6분으로 제한되어 있었습니다.
관련된 Stackoverflow 의 포스팅
고객사마다 구글 계정을 사용하는 방식도 다르고, 구글에서 제공해주는 실행시간도 다른 것으로 보이기 때문에 프로젝트를 준비하는 단계에서 실행시간 한계 테스트를 해보는 것이 적절한 것 같습니다.
반복작업이 요구되는 자동화 기능의 경우에는 스크립트당 실행 시간 제한을 우회할 수 있는 방법이 필요합니다. 다른 노하우 포스팅에서 상세하게 다루게 되겠지만, 트리거 예약을 통해서 어느 정도 목적을 달성할 수 있습니다.
트리거 예약은 동시에 계정당 20개까지 가능하기 때문에, 한 번의 스크립트 실행으로 정책상 최대 120분까지 스크립트의 실행이 가능합니다. 그러나 실제 프로젝트에서는 안정성을 위해서 트리거 예약당 약 5분을 할당하는 편인데, 그러면 최대 100분까지 실행이 가능합니다. 여러 계정을 사용하면 동시에 많은 트리거를 예약할 수 있는 효과가 있기에 좀 더 큰 규모의 작업도 가능합니다.
적용 사례
구글 시트의 데이터로 수백장으로 구성된 슬라이드를 만들고 PDF로 변환하는 기능을 구현할 때, 트리거 예약을 통해 슬라이드 생성을 자동화하였습니다.
슬라이드에는 텍스트와 이미지가 추가되어야 했고, 1장당 약 8초의 시간이 소요되었습니다.
이론적으로는 360초의 실행시간 제한 내에 45 슬라이드가 추가되었어야 하지만, 스크립트를 실행할 때 필요한 여러 작업들과 안정성을 위해서 30 슬라이드 정도만 추가가 가능하였습니다.
구글 슬라이드는 약 500장까지는 여는데 문제가 없지만, 1000장이 되면 열다가 다운되는 경우가 종종 발생해서 500장을 한도로 잡았습니다.
1개의 트리거당 약 30 슬라이드를 추가하도록 한도를 정해, 트리거 제한 20개 이내로 500장의 슬라이드를 생성하는 작업을 구현했습니다.
당초 고객사의 목표는 파일장 1만 슬라이드였으나, 구글 워크스페이스 상에서는 그 정도 크기의 슬라이드를 감당할 수 없었고, 스크립트도 구현이 불가능하여 타협점으로 500장을 구현하였습니다. 대신 다수의 계정으로 동시 작업이 가능하도록 구현해 동일한 시간 내에 수천장을 생성할 수는 있었습니다.
구글 앱스 스크립트에는 분명한 한계가 존재합니다. 할 수 있는 것과 없는 것을 검토하고 이해하는 것이 프로젝트를 원만하게 진행하는 데 필수요소입니다.

트리거 실행 시간 합계 쿼타

트리거 예약이 동시에 20개까지 가능하기 때문에, 트리거를 사용하고 나서 삭제하면 다시 트리거를 예약할 수 있습니다. 이렇게 반복하면 한 계정당 매우 많은 작업을 할 수 있을 것으로 생각할 수 있습니다.
하지만 구글은 트리거 실행 시간 합계에도 제한을 두고 있습니다. Triggers Total Runtime 이라는 항목으로 무료 계정은 일 90분, 워크스페이스 계정은 일 6시간 (360분) 입니다.
트리거 1개에 6분씩 제한을 다 사용한다고 하면, 무료 계정 기준으로는 15개의 예약 밖에 못하는 상황이 생기게 됩니다. 20개 예약도 다 사용하지 못하게 되는 것이죠.
그런데, 이 정책은 엄격하게 적용되고 있지는 않은 것 같습니다.
무료 계정으로 일 20시간 이상 분량을 트리거로 실행시키기도 하고, 다양한 경우가 있었지만 아직까지는 한 번도 트리거 실행 시간 합계 쿼타가 적용되어 더 이상 스크립트를 실행시킬 수 없었던 적은 없었습니다.
reddit 의 관련 포스팅

일 이메일 발송수 쿼타

이메일 발송 수는 무료 계정은 100개, 워크스페이스 계정은 1,500개로 쿼타가 정해져 있습니다.
우회 방법없이 엄격하게 적용되고 있기 때문에, 이메일 발송을 많이 해야하는 경우에는 워크스페이스 계정을 사용하는 것을 권장합니다.

관련 포스팅

다음의 포스팅을 준비 중에 있습니다.
트리거 예약 방법 및 다수의 트리거 순차적 예약방법
자동화 프로세스 분할하여 트리거 예약 방법