본문 바로가기

기술

[Google Apps Script] 구글 설문으로 자동 드라이브 공유 및 슬랙 초대하기

 

들어가며

저희 동아리에서는 신입 회원이 있을 경우 구글 폼을 통해 사용자 정보를 받습니다. 그 후 구글 이메일을 통해 동아리 드라이브를 공유하며 슬랙에 초대를 합니다. 매번 새로운 신입 회원이 생길 때마다 위 과정을 반복하는 것은 여간 귀찮은 것이 아닙니다. 이번 기회에 이 과정을 자동화 해보았습니다.

Apps Script란?

간단히 스프레드 시트에서 실행할 수 있는 스크립트라고 생각할 수 있습니다. javascript를 사용하며 자체적으로 .gs 라는 확장자를 사용합니다. 다음 사이트에서 'Starting Script'를 통해 시작할 수 있습니다.

https://www.google.com/script/start/

 

Apps Script – Google Apps Script

Example Scripts From productivity tools to enterprise automation, see what you can build with Google Apps Script. Learn more »

www.google.com

혹은 스프레드 시트에서 바로 연결할 수 있습니다. (도구 -> 스크립트 편집기)

코드

운이 좋게도 좋은 코드를 찾았습니다! 이 코드는 구글 설문 입력시 슬랙을 자동으로 초대해주는 함수입니다. (구글 공유드라이브 보기 권한도 추가 방법은 뒤에서 설명합니다)

https://gist.github.com/vors/bd585fc6e3d027804f80#file-slackautoinvite-js-L1

 

Automation for sending Invites on Slack. Based on Google Forms and Google script. For more context read https://levels.io/slack-

Automation for sending Invites on Slack. Based on Google Forms and Google script. For more context read https://levels.io/slack-typeform-auto-invite-sign-ups/ - SlackAutoInvite.js

gist.github.com

함수의 동작 방식을 조금 설명하자면, 스프레드 시트에 새로운 응답이 올 때 (즉, 트리거가 발생할 때), ``onFormSubmitEx``함수를 실행합니다. 이 함수에서는 슬렉 API로 POST 요청을 보내 초대를 하게 됩니다. 이후, 실행 결과를 메일로 보내줍니다. (구글 설문지 응답을 스프레드 시트에 기록하는 법은 이 글을 참고하십시오.)

Slack API 사용하기

재밌는 점은 Slack API를 사용하는 부분입니다. 공식적인 슬랙 API는 다음 사이트에서 확인할 수 있습니다.

https://api.slack.com/

 

Where work happens

Slack is where work flows. It's where the people you need, the information you share, and the tools you use come together to get things done.

slack.com

그런데 공식적으로 지원하지 않는 API도 있습니다. 새로운 멤버를 초대하는 API는 다음 비공식 API의 users.admin.invite.md를 사용해야 합니다.

https://github.com/ErikKalkoken/slackApiDoc

 

ErikKalkoken/slackApiDoc

Documentation of undocumented Slack API methods. Contribute to ErikKalkoken/slackApiDoc development by creating an account on GitHub.

github.com

이 API를 사용하기 위해서는 슬랙 토큰이 필요합니다. 쉽게 설명하면 토큰은 인증을 위해 사용되는 개인 정보라고 볼 수 있습니다. (토큰 인증 및 다른 인증 방법의 발달과 원리가 궁금하다면 이 글을 참고하십시오). 슬랙 API를 사용하기 위한 토큰을 발급 받는 방법은 다음 사이트의 중간 부분인 Legacy information의 Create token 버튼을 클릭하면 됩니다.

https://api.slack.com/custom-integrations/legacy-tokens

 

Legacy tokens

Learn how to build bot users, send notifications, and interact with workspaces using our APIs.

api.slack.com

이후 함수의 ``// secrets``의 ``SlackToken``에 해당 값을 넣어줍시다.

Google Apps Script API 사용하기

다음 사이트에서 API들을 확인할 수 있습니다. 특히 좌측 메뉴바의 G Suite Services를 눌러보면 사용할 수 있는 구글의 서비스들이 클래스 형태로 되어있습니다. 타 API와 비슷하게 사용하면 됩니다.

https://developers.google.com/apps-script/reference/

 

Reference Overview  |  Apps Script  |  Google Developers

Apps Script services provide ways for your script to easily access data on Google and external systems. These services are built into the Apps Scipt environment so you don't have to import them or implement authorization controls yourself. Services are exp

developers.google.com

Google 문서의 id 값

구글 드라이브의 폴더, 혹은 파일에 들어갈 경우 URL은 다음과 같은 형식일 것입니다.

https://drive.google.com/drive/u/0/folders/1-PL6CcUE**************HU8b8ohy

이때, 뒤의 ``1-PL6CcUE**************HU8b8ohy``부분이 그 문서의 고유 id 값입니다. 스프레드시트, 구글 드라이브 등 구글 서비스를 사용하다 보면 ID값을 종종 사용하게 될테니 잘 기억해두십시오.

Google 드라이브 자동 공유

생각보다 너무 간단합니다. Script API의 DriveApp 클래스를 사용하여 다음과 같은 코드를 추가해주면 됩니다.

var folder = DriveApp.getFolderById(googleDriveID)
folder.addViewer(toAddress)