FVTT 인원이 많이 늘고는 있지만, 아직 대부분의 사람들이 스프레드 시트랑 병용하거나 그거만 사용하고 있을거임.
나도 스프레드 시트에 데이터 넣고 사이트에 데이터 넣으려니깐 너무 고통스러워서 매크로를 만들어봤음.
나 말고 쓸 사람이 더 있나는 모르겠는데, 활용법만 알고 있으면 어떤 시스템을 하든지 데이터 넣기가 아주 편안해질거임.
준비물은
1. 데이터가 들어간 스프레드 시트
2. FVTT
이번에 알아볼 거는 스프레드 시트에 있는 데이터를 FVTT로 가져와서 아이템으로 만들어주는 매크로임.
코딩 관련 지식이 하나도 없으면 적용하기 힘드니깐, 최소한의 자바스크립트 및 해당 룰 시스템 활용 지식은 알고 있는 편이 도움이 됨.
아마 자기가 매크로 만들어 본적이 있으면 어렵지 않을거임.
나는 카미가카리 시스템을 주로 애용하니 그걸로 설명할거임.
추가하고자 하는 것은 이 룰에서 사용하는 스킬인 탤런트.
필요한 데이터를 잘 구성해서 이런 식으로 표로 만들어주고 공유 설정을 잘 해줘.
스프레드 시트에는 시트에 있는 내용을 쉽게 받아올 수 있도록 기능을 지원하고 있어.
주소만 입력해도 원하는 데이터를 받아올 수 있게끔 말이야.
위에서 우리는 스프레드 시트를 공유하고 그 주소를 받아왔어.
예를 들어 https://docs.google.com/spreadsheets/d/1o8GMCN9eeKkLBh6-4b8jFja3PLejUy1gWiQuNqUpDEo/edit#gid=0 라고 해보자
이 주소를 조금 바꿔볼꺼야
https://docs.google.com/spreadsheets/d/1o8GMCN9eeKkLBh6-4b8jFja3PLejUy1gWiQuNqUpDEo/gviz/tq?tq=쿼리&sheet=시트명
쿼리 부분엔 "SELECT A,B,C,D,E,F,J" 같이 쿼리를 넣어주고
시트명 부분엔 가져오고자 하는 스프레드 시트의 시트명을 넣어줘
다 만들면 이런 식으로 나올거야
https://docs.google.com/spreadsheets/d/1o8GMCN9eeKkLBh6-4b8jFja3PLejUy1gWiQuNqUpDEo/gviz/tq?tq=SELECT+A,B,C,D,E,F,G,H,I,J&sheet=%EC%8B%9C%ED%8A%B81
주소를 입력해서 json 파일을 받아올 수 있다면 스프레드 시트 쪽 준비는 끝났어.
다 찾았으면 해당 시스템을 보면서 각 요소가 어떤 이름을 가진지 파악을 해야 함.
시스템의 template.json 파일을 뜯어봐도 되고, 아니면 알아서 알아보셈.
내 기준으로 따지면
이름: name, 조건: condition, 타입: talentType이나 classType, 제한: class, 타이밍: timing, 거리: range, 대상: target, 코스트: cost, 개요 및 효과: flavor
같은 식으로 찾아볼 수 있었어.
준비는 끝났으니 코딩을 해보자
var url = "https://docs.google.com/spreadsheets/d/1o8GMCN9eeKkLBh6-4b8jFja3PLejUy1gWiQuNqUpDEo/gviz/tq?tq=SELECT+A,B,C,D,E,F,G,H,I,J&sheet=%EC%8B%9C%ED%8A%B81"
var callback = async function(d) {
for (var i = 1; i < d.length; ++i) {
var item = d[i].c;
var condition = (item[1] == null) ? "-" : item[1].v;
if (condition == "+")
condition = "◎"
var talentType = (item[2] == null) ? "COMMON" : item[2].v;
var classType = "-";
if (talentType == "A" || talentType == "B") {
classType = talentType;
talentType = "STYLE";
} else
talentType = "RACE"
var data = {
condition: condition,
talentType: talentType,
class: (item[3] == null) ? "" : item[3].v,
classType: classType,
timing: (item[4] == null) ? "" : item[4].v,
range: (item[5] == null) ? "" : item[5].v,
target: (item[6] == null) ? "" : item[6].v,
cost: (item[7] == null) ? "" : item[7].v,
description: `
<p>${(item[8] == null) ? "" : item[8].v}</p>
<p> </p>
<p>${(item[9] == null) ? "" : item[9].v}</p>`
}
const name = item[0].v;
const itemData = {
name: item[0].v,
type: 'talent',
data: data
};
console.log(itemData);
await Item.create(itemData);
}
}
$.ajax({
type: "GET",
url: url,
success: function(resp) {
resp = resp.split("google.visualization.Query.setResponse(")[1];
resp = resp.split(");")[0];
var data = JSON.parse(resp);
data = data.table.rows;
callback(data);
}
});
이건 예제 코드.
각 시스템과 원하는 내용에 따라 바뀔거니 그대로는 못쓰고 수정을 해야할거야.
수정할 때 중요한 부분
1. var url = "" -> 여기에 아까 만들었던 스프레드 시트 주소를 넣어주자.
2. item[0] ~ item[9] 아까 받아온 A, B, C, D, E, F, G, H, I, J가 차례대로 들어가 있어. 가져다가 원하는 대로 가공하면 됨.
3. 아이템 생성
var data = {
condition: '',
talentType: '',
class: '',
classType: '',
timing: '',
range: '',
target: '',
cost: '',
description: ``
}
아까 찾아낸 데이터를 차례대로 넣어주자. json 읽는 방법은 다 할 수 있을 거라고 생각해.
const itemData = {
name: item[0].v,
type: '',
data: data
};
Item.create(itemData);
type 쪽에는 아이템의 타입을 넣어주면 됨.
후반부에는 좀 날로 먹었는데, 머 잘 할 수 있는 사람은 알아서 잘 하겠지
만들다가 질문 있으면 덧글 달아줘
댓글 0