비망록 · Google Apps Script로 스택하기 쉬운 원인과 대책 메모
코딩뿐이라면 알아차리기 어려운 포인트도 많이 있어, 실무로서 임하는 가운데 막히는 것이 많았던 포인트에 대해서, 개인용의 비망록으로서 정리해 보았습니다.
권한이 적절하지 않음
스프레드시트나 캘린더, 드라이브 등의 서비스를 GAS로 조작한다는 것은 유스 케이스로 많이 발생한다고 생각합니다만
권한이 없어 오류가 발생할 수 있습니다.
자주 있는 것은 트리거 권한이 제대로 설정되지 않은 경우입니다.
관리자와 개발자가 분리되어 있는 경우라면 트리거는 관리자가 설정하는 경우도 있으므로
"관리자가 필요한 리소스에 대한 적절한 권한을 가지고 있습니까?"
필요한 경우 설명서를 작성하고 절차를 공유해야 합니다.
권한 오류가 발생하기 쉬운 포인트
파일 편집 권한이 없음
스크립트를 실행하는 사용자가 스프레드시트와 같은 파일에 대한 권한이 없는 경우 발생합니다.
캘린더를 볼 수 있는 권한 없음
Google 캘린더 정보를 얻으려면 '실행하는 사용자가 캘린더를 볼 수 있도록 허용'해야 합니다.
예를 들어 관리자의 캘린더를 GAS 프로젝트에서 검색하려면 다음 조건 중 하나를 충족해야 합니다.
또한 관리자의 캘린더를 개발자에게 공유한 경우에는 다음 조건에서도 얻을 수 있습니다.
범위 지정에 매직 넘버 사용
매직 넘버(영어: magic number)란, 인간어로 쓴 프로그램의 원 네타(소스 코드)안에
직접 내장된 의미가 있는 값
(인용처 : htps // 3. 네-3-있어. 엔후 / rd12868. HTML)
GAS에서 스프레드시트를 사용하고 있다면
getRange
라는 메서드를 사용한 적이 있을까 생각합니다.스프레드시트의 범위 취득
getValues
이나, 스프레드시트에 값을 입력한다 setValues
인수로 사용하는 시작 셀, 범위 지정 등에서 매직 넘버를 사용하면스프레드시트의 구조를 변경할 때 나중에 매직 넘버의 모든 값을 변경해야 하기 때문에
유지 보수가 상당히 어렵습니다.
// マジックナンバーを使用した場合
const targetRange = sheet.getRange(5, 1, 6, 5);
// マジックナンバーを使用しない場合
const startRow = 2;
const startColumn = 1;
const rangeRowCount = 6;
const rangeColumnCount = 5;
const targetRange = sheet.getRange(startRow, startColumn, rangeRowCount, rangeColumnCount);
코드 양은 증가하지만 유지 보수는 상수 부분 변경만으로 좋습니다.
매직 넘버를 사용할 것 같은 포인트에 대해서는 반드시 변수나 상수를 사용합시다.
GAS의 경우는 다른 스크립트 파일.
변수·정수는 아래와 같이, 다른 스크립트 파일로서 관리하면 메인터넌스하기 쉽습니다.
Reference
이 문제에 관하여(비망록 · Google Apps Script로 스택하기 쉬운 원인과 대책 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/solare_tech/items/3a015747da6970f41e4b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)