Google Apps Script - Slides - Bar chart 만들기
1 분 소요
Google Apps Script - Slides - Bar chart 만들기
- 저는 엑셀이나 matplotlib 등을 사용해서 차트를 만드는 것보다, 구글 슬라이드에서 직접 모양을 하나씩 넣어가면서 차트를 만드는 것을 더 좋아합니다.
- 따라서, 오늘은 간단한 bar chart의 형태를 하나하나 모양을 추가하면서 만드는 코드를 정리하였습니다.
function myFunction() { // presentation을 엽니다. var slideId = ''; var presentation = SlidesApp.openById(slideId) var targetSlide = presentation.getSlides()[2] var leftStart = 10;
var topStart = 100;
var eachShapeWidth = 6;
var betweenShapeWidth = 2;
// heights에 들어 있는 값이
// 각각 그려져야 하는 bar의 길이를 말합니다.
var heights = [866, 930, 1070, 1072]
if (targetSlide.getShapes().length != heights.length) {
// 현재 모양이 추가되어 있지 않을 경우, 새롭게 모양을 추가해줍니다.
for (var i=0; i < heights.length; i++) {
var thisShape = targetSlide.insertShape(SlidesApp.ShapeType.RECTANGLE);
}
}
// shape들을 하나씩 위치와 색깔등을 변경해줍니다.
var shapes = targetSlide.getShapes()
for (var i=0; i < heights.length; i++) {
var thisShape = shapes[i];
var widthSum = i * eachShapeWidth;
var betweenWidthSum = i * betweenShapeWidth;
var height = heights[i] / 20.0
// shape의 위치를 정할 때, left, top을 통해 그려져야 하는 포인트를 찾습니다.
// 그런데 여기서 bar는 아래쪽에 맞춰져 있는 것이 필요하기 때문에,
// 위치를 맞추기 위해서 일정값(300)에서 height를 빼주는 식으로 처리하여
// 좌표를 역으로 처리해줍니다.
thisShape.setLeft(leftStart + (widthSum + betweenWidthSum))
thisShape.setTop(300 - height)
thisShape.setWidth(eachShapeWidth)
thisShape.setHeight(height)
thisShape.getBorder().setTransparent()
thisShape.getFill().setSolidFill("#5F0000")
//thisShape.getBorder().setTransparent()
}
}
Wrap-up
- 여러 모양들을 한번에 선택하여, “아래쪽 맞춤”을 해줄 수 있을 것 같은데, 그 방법을 찾지 못해서 좀 아쉽네요.
댓글남기기