Language
한국어

SCOPES = ['https://www.googleapis.com/auth/presentations','https://www.googleapis.com/auth/spreadsheets.readonly']
multi.jpg

두개 이상의 권한이 필요할 경우 배열로 사용하면 된다.

프레젠테이션의 4번째 슬라이드에 차트 개체가 1개 있는 상태에서 업데이트된 차트는 지운 후에, 동일한 소스(스프레드시트 차트 개체)를 다시 생성하는 방식으로 업데이트 가능하다.

해당 경우 처럼 슬라이드 쓰기 권한과 스프레드시트 읽기 권한이 필요할 경우 사용 가능하다.
물론 drive 전체 권한을 사용하면 되지만, 멀티 oAuth를 테스트하고 최소한의 권한을 부여하는 예를 테스트 하기 위해 구현해 봤다.

    presentation = service.presentations().get(presentationId=presentationId).execute()
    slides = presentation.get('slides')
    slide = slides[4]
    obj = slide.get('pageElements')[0]

    requests = [
        {'deleteObject': {'objectId' : obj['objectId']}},
        {'createSheetsChart' : {
           'spreadsheetId' : obj["sheetsChart"]["spreadsheetId"],
           'chartId' : obj["sheetsChart"]["chartId"],
           'linkingMode' : 'LINKED',
           'elementProperties' : {
              'pageObjectId' : slide['objectId'],
              'size' : obj["size"],
              'transform' : obj["transform"],
            }
          }
        }
    ]

linkingMode를 설정하지 않으면, 이미지 형태로 차트 개체가 생성되므로 한번 업데이트 후 재업데이트가 불가하므로 해당 옵션으 사용한다.

구글 스크립트는 알아서 필요 권한을 추가하도록 연결시켜주지만 슬라이드 API를 사용하기 위해서는 advanced 기능에서 사용 활성화가 필요한 옵션이 있고, python Gdata의 경우는 해당 옵션이 필요 없는 대신에 SCOPE를 통한 권한 설정을 수동으로 해줘야 한다.(구글 개발자 콘솔에서 사용 활성화는 공통일 것이다.)