안녕하세요. 원다게입니다.
이번 포스팅은, 구글 스프레드시트로 만든 로아 숙제 체크표 공유입니다.
항상 모든 스프레드시트는 '사본만들기' 후 사용하시기 바랍니다!!
사용법을 꼼꼼히 읽어보신 후 사용하세요!!
특히 빨간색 글자는 반드시 반드시 읽기!!!!!
우선 화면은 이런식으로 생겼습니다.
사용에 필요한 메소드는 모두 구현되어 있으므로, 바로 사용하시면 됩니다만
빠른 속도를 위해 이전과는 다르게 크롤링 방식이 아닌 로아API 방식을 사용했습니다.
때문에 로아 API KEY가 반드시 필요합니다!
로아 API KEY 발급 방법은 아래 포스팅을 확인하시면 되겠습니다.
https://giveme100.tistory.com/158
여기서 (A)라고 표시 된 부분은 자동입력 부분이고,
숙제를 하면서 손댈 부분은 체크박스 부분입니다.
클리어 한 경우 체크박스 표시 해주면 되겠습니다.
일간 초기화를 하고 나면 아래와 같이 화면이 바뀝니다.
카오스, 가디언, 일간에포나와 길드 일일출석 체크박스는 모두 초기화되고,
카오스와 가디언의 체크박스 체크 여부에 따라 휴식경험치가 갱신됩니다.
체크한 경우 -> 휴식경험치가 2 줄어듭니다.
체크하지 않은 경우 -> 휴식경험치가 1 늘어납니다.
따라서,
초기 사본만들기 후, 카오스와 가디언의 휴식경험치는 최초 1회 수동으로 입력해 주시기 바랍니다.
주간 초기화를 하면, 아래와 같이 주간 컨텐츠가 모두 비워집니다.
다시 한번 말씀드리지만, 체크 부분을 제외한 어느 곳도 수동으로 입력할 필요가 없습니다.
그러면 의문이 들텐데요,
내 캐릭터 명과 직업 레벨 카오스나 가디언 어디돌지! 길드는 어딘지, 어떻게 적냐!!!!
스프레드시트 아래 시트 고르는 부분에 'setting' 여기서 입력합니다.
여기를 가세요.
여기로!
들어가면 아래와 같이 시커면 화면이 나옵니다!!
여기서 일단 저기 아래 그림 노란글자 보이시죠.
여기다가 로아 API KEY 를 적습니다.
그리고 저 회색 배경 칸에 캐릭터명을 쓰세요!!!
다 썼으면 업데이트 버튼을 누르세요!!
그러면 아래처럼 쫙 입력됩니다.
그럼 어떻게 될까요.
숙제 시트에 자동으로 업뎃됩니다!!!!! 정보가!
제가 트리거까지 다 설정해놨는데, 사본만들기를 했을 때 트리거까지 같이 될지는 모르겠습니다.
이 경우, 매일과 매주 간격으로 트리거를 꼭 설정해주세요. 그래야 자동으로 초기화됨!!!
안되어 있는 경우 트리거 설정방법은 아래 포스팅을 확인하세요.
https://giveme100.tistory.com/170
트리거 설정은 아래로 맞추세요.
trigger_weekclear -> 매주 수요일 오전 6~7시
trigger_dayclear -> 매일 오전 5~6시
init -> 매일 오전 5~6시
그럼 세팅 쫙 하시고,
로아 체크표 활용하셔서 즐거운 로아하세요~~~~
스프레드 시트 공유 주소는 아래 링크를 따라가세요.
끝!
소스코드는 시트 안에도 있으나,
아래 코드 블럭으로도 알려드릴테니 다른데도 써보세요.
(공대 관리 시트에 한번 써보세요!!, 못쓰면 다음 포스팅 기다리시면 제가 만들어서 올립니다.)
정보 불러오는 소스
function init(){
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('setting');
sheet.getRange(2,9).setBackground('#ff0000');
let date = new Date();
let apiKey = "bearer "+ sheet.getRange(1,3).getValue();
let row = 5;
let cnt_char = sheet.getRange(2,7).getValue();
cnt_char = cnt_char + row;
let arr_char_name = "B5:B"+cnt_char;
let char_name = sheet.getRange(arr_char_name).getValues();
cnt_char = cnt_char - row;
let arr_profiles;
let arr_engravings;
let cnt_engravings;
for(var i=0; i<cnt_char; i++){
arr_profiles = get_profiles(apiKey, char_name[i]);
sheet.getRange(row, 3).setValue(arr_profiles[0]);
sheet.getRange(row, 4).setValue(arr_profiles[1]);
sheet.getRange(row, 5).setValue(arr_profiles[2]);
arr_engravings = get_engravings(apiKey, char_name[i])
sheet.getRange(row, 7).setValue(arr_engravings);
arr_engravings = arr_engravings.replace(/([0-9])/g,"$1\n");
if(arr_engravings.indexOf("감소")==-1){
cnt_engravings = arr_engravings.replace(/[^0-9]/g,'');
}else{
cnt_engravings = arr_engravings.substring(0,arr_engravings.indexOf("감소")).replace(/[^0-9]/g,'');
}
sheet.getRange(row, 6).setValue(cnt_engravings);
row++;
}
sheet.getRange(1,9).setValue("UPDATE: " + date.toLocaleDateString());
sheet.getRange(2,9).setBackground('#000000');
}
function get_profiles(apiKey, name){
let options = {'method': 'GET',
'muteHttpExceptions': true,
'Content-Type': 'text/html',
'headers' : {
'accept':'application/json',
'authorization': apiKey},
};
let response = UrlFetchApp.fetch("https://developer-lostark.game.onstove.com/armories/characters/"+name+"/profiles", options);
response = JSON.parse(response.getContentText());
return [response.ItemMaxLevel, response.CharacterClassName, response.GuildName]
}
function get_engravings(apiKey, name){
let options = {'method': 'GET',
'muteHttpExceptions': true,
'Content-Type': 'text/html',
'headers' : {
'accept':'application/json',
'authorization': apiKey},
};
let response = UrlFetchApp.fetch("https://developer-lostark.game.onstove.com/armories/characters/"+name+"/engravings", options);
response = JSON.parse(response.getContentText());
let res = "";
for(let i=0; i<response.Effects.length; i++){
res = res + response.Effects[i].Name;
if(i - response.Effects.length != -1){
res = res + "\n"
}
}
return res;
}
트리거 소스 코드
//일일 TRIGGER는 이 메소드를 초가
function trigger_dayclear() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('숙제');
var startRow = 4;
var endRow = 4 + sheet.getRange(1,3).getValue()-1;
var d_epona = 10;
var d_check = 12;
var chaos = 5;
var chaosFg = 6;
var gardian = 8;
var gardianFg = 9;
var cnt;
for(var i=startRow; i<=endRow; i++){
sheet.getRange(i,d_epona).setValue("");
sheet.getRange(i,d_check).setValue("");
}
for(var i=startRow; i<=endRow; i++){
if(sheet.getRange(i,chaosFg).getValue()==1){
sheet.getRange(i,chaosFg).setValue("");
cnt = sheet.getRange(i,chaos).getValue();
cnt = cnt-2;
if(cnt<0) cnt=0;
sheet.getRange(i,chaos).setValue(cnt);
}else{
cnt = sheet.getRange(i,chaos).getValue();
cnt++;
if(cnt>=5) cnt=5;
sheet.getRange(i,chaos).setValue(cnt);
}
}
for(var i=startRow; i<=endRow; i++){
if(sheet.getRange(i,gardianFg).getValue()==1){
sheet.getRange(i,gardianFg).setValue("");
cnt = sheet.getRange(i,gardian).getValue();
cnt = cnt-2;
if(cnt<0) cnt=0;
sheet.getRange(i,gardian).setValue(cnt);
}else{
cnt = sheet.getRange(i,gardian).getValue();
cnt++;
if(cnt>=5) cnt=5;
sheet.getRange(i,gardian).setValue(cnt);
}
}
};
//주간 TRIGGER는 이 메소드를 추가
function trigger_weekclear() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('숙제');
var startRow = 4;
var endRow = 4 + sheet.getRange(1,3).getValue()-1;
var arr = [13, 14, 15, 16,17,18,19,20,21,22,23,24];
for(var i=startRow; i<=endRow; i++){
for(var j=0; j<arr.length; j++){
sheet.getRange(i,arr[j]).setValue("");
}
}
};
예전 코드 재활용하다보니,
코드에 let과 var가 혼용되어있는데,
큰 문제는 없고 무엇보다 고치기 귀찮으니 그냥 올립니다!!!
그럼 즐로아 하세요.
모르시는거 있으시면 댓글주시구요~
'로스트아크 > 로스트아크 편하게하기' 카테고리의 다른 글
구글 스프레드시트에서 로아 편하게 하기 6탄: 로아API 사용해서 거래소 가격 긁어오기 (6) | 2023.01.12 |
---|---|
크롬 관리자도구로 로아 편하게 하기 1탄: 로아와에서 랭킹 정보를 읽어오고 싶어요! (1) | 2022.02.04 |
구글 스프레드시트에서 로아 편하게 하기 6탄: 카오스, 가디언.. 휴경은 어떻게 처리할까? (0) | 2021.10.01 |
구글 스프레드시트에서 로아 편하게 하기 5탄: 카오스, 가디언 어디 돌지 표시하기 (0) | 2021.09.30 |
구글 스프레드시트에서 로아 편하게 하기 4탄: 공대 관리하기 (9) | 2021.07.29 |