
네이버 밴드를 통해 글쓰기 챌린지를 진행하고 있어요.
매일 참가자들이 올린 글 url 을 확인하고, 지각체크를 해서 밴드에 글을 올려야 하는 상황입니다.

지난 기수엔 매일 아침 30분 정도 직접 올라온 글들을 체크했어요. 이번 기수엔 조금 다르게 해보고 싶었습니다. 하루 30분씩 100일, 50시간을 대체할 수 있는 코드가 있다면 그 시간동안 더 많을 글을 쓸 수 있을 것 같았거든요. 자동화를 어떻게 계획하고 만들었는지 코드와 함께 보여드리겠습니다.
저는 아래와 같이 5가지 순서로 진행했습니다.
글쓰기 플랫폼 관리를 위해 저는 매일 '네이버 밴드에 들어가 각 멤버들이 올린 글을 더블체크겸 구글 스프레드 시트에 옮겨 적고 지각한 사람들의 이름을 모아 #떙떙님 지각이에요' 라고 적곤 했습니다. 이걸 좀더 요약해서 말해보자면,
1) 네이버 밴드 및 구글 시트 로그인
2) '어제' 올라온 글의 링크를 모두 수집
3) 구글 스프레드 시트 내 '어제' 부분에 업데이트
3) 글을 올리지 않은 사람의 이름을 가지고 네이버 밴드에 글쓰기
가 됩니다.
네이버 밴드와 구글 시트 로그인을 위해서는 각 사이트가 제공하는 API 를 활용해야 했습니다. 네이버 밴드 api 안내 페이지는 링크 에서 확인할 수 있습니다.
네이버 밴드에서 안내해준 대로, 'api'를 활용하여 밴드에 접근할 수 있는 인증토큰을 받아야 합니다. 그때 '내 서비스' 가 없다면 하나 등록해줘야겠죠.
(1) 네이버 밴드 연결
https://developers.band.us/develop/myapps/api/form
아래 포맷에 열심히 입력해줍니다.

제출하게 되면 밴드에 활용할 수 있는 애플리케이션을 client ID 와 함께 확인할 수도 있습니다.
(내서비스 목록을 캡쳐하고 싶었는데, 글쓰는 지금은 server connection error 가 뜨네요)

이때 제가 연결하고자 하는 밴드 선택이 가능합니다. 글쓰기 플랫폼 밴드만 연결해두었어요. 아래를 활용하여 밴드 접근 시, 밴드의 키와 이름 확인이 가능합니다. (네이버 안내 참고 링크)
import json
from urllib import request
def get_bands():
url = f'https://openapi.band.us/v2.1/bands?access_token={token}'
req = request.Request(url)
res = request.urlopen(req)
decoded = res.read().decode('utf8')
json_dict = json.loads(decoded)
return json_dict
(2) 구글 스프레드 시트 연결 (작성중)
구글 스프레드 시트 api 연결은 credential 하는 부분에서 더 시간이 많이 걸렸습니다. 구글 자체에서 제공해주는 python 코드들이 많기에 json 파일만 잘 갖고 있으면 그 다음은 수월합니다!
먼저 Google Sheets API 페이지에서 '사용' 버튼을 클릭합니다.

import gspread, os
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.service_account import ServiceAccountCredentials
# 구글 API 사용을 위한 상수들
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
key_file_name = '(저장 경로)/credentials.json' # 아까 받은 json 인증키 파일 경로가 들어가면 됨.
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_file_name, scope)
spreadsheet = gspread.authorize(credentials).open_by_url(sheet_url)
worksheet = spreadsheet.worksheet(sheet_name)
기다리고 있습니다... 더 작성하실 의향은 없으실까요? ㅠㅠ