비망록 · Google Apps Script로 스택하기 쉬운 원인과 대책 메모

Google Apps Script(GAS)는 편리한 반면, Google Workspace(G Suite) 특유의 주의점이 많거나 합니다.
코딩뿐이라면 알아차리기 어려운 포인트도 많이 있어, 실무로서 임하는 가운데 막히는 것이 많았던 포인트에 대해서, 개인용의 비망록으로서 정리해 보았습니다.

권한이 적절하지 않음



스프레드시트나 캘린더, 드라이브 등의 서비스를 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의 경우는 다른 스크립트 파일.
    변수·정수는 아래와 같이, 다른 스크립트 파일로서 관리하면 메인터넌스하기 쉽습니다.

    좋은 웹페이지 즐겨찾기