GoogleAppsScript의 Drawing Class로 만들어 놀자!
12834 단어 자바스크립트GoogleAppsScriptspreadsheetgas
소개
본 기사는 요전에 행해진 【온라인 대담】 Google Apps Script 활용 토크 #6 로 제가 등단한 내용을 Tech 기사로서 리라이트한 것이 됩니다.
등단 감상 포함의 것은 블로그에 나중에 올리므로 흥미가 있는 분은 그쪽도 봐 주세요.
문서 : htps : // / cs. 오, ぇ. 이 m/p레센타치 온/d/1오우 Lvrt응gゔぃ4ykftB쵸 zVS-r6F↓54LgCqYs코x3Y/에아t? 우 sp = 샤린 g
Dowing Class란?
Drawing Class는 2020/04/02에 릴리스된 스프레드시트 서비스 내의 클래스에서 도형에 관한 파라미터를 조작할 수 있는 것입니다.
이렇게하면 시트의 도형 크기를 변경하거나 위치를 변경할 수 있습니다.
구현되는 메소드
실제로 사용할 수 있는 메조트의 일부를 소개합니다.
보다 자세한 내용을 알고 싶은 분은 공식 문서 Class Drawing | Google Developers를 봐 주세요.
getContainerInfo()
도면이 저장된 컨테이너의 정보를 가져옵니다.
주로 위치를 얻는 데 사용됩니다. (사이즈는 후술하는 getWidth, getHeigeht 취할 수 있습니다)
function printDrawPosition() {
const drawings =SpreadsheetApp.getActiveSheet().getDrawings();
// 設置されている列番号
Logger.log(drawings[0].getContainerInfo().getAnchorColumn())
// 設置されている行番号
Logger.log(drawings[0].getContainerInfo().getAnchorRow())
// 設置されているセルの左上からどれだけx軸で離れているか(pixcel)
Logger.log(drawings[0].getContainerInfo().getOffsetX())
// 設置されているセルの左上からどれだyy軸で離れているか(pixcel)
Logger.log(drawings[0].getContainerInfo().getOffsetY())
}
drawings.getHeight()
drawings.getWidth()
메조트 이름대로 높이와 가로 폭을 가져옵니다. 반환값은 Pixel 단위입니다.
const drawings =SpreadsheetApp.getActiveSheet().getDrawings();
// 縦(pixels)
Logger.log(drawings[0].getHeight())
// 横(pixels)
Logger.log(drawings[0].getWidth())
getZIndex()
Z축의 수치를 취합니다. Z축은 오브젝트끼리의 겹치는 순서로 젊은 숫자만큼 앞에 있게 됩니다.
setWidth()
setHeight()
높이와 너비를 변경할 수 있습니다. 단위는 pixel
// 横200px に変更する
drawings[0].setWidth(200)
// 縦200pxに変更する
drawings[0].setHeight(200)
setPosition()
도형의 위치를 변경합니다.
지정 방법은 (행 번호, 열 번호, 가로 오프셋 값 (px), 세로 오프셋 값 (px))입니다.
전반 두 개의 인수로 지정된 셀의 왼쪽 위 점을 0으로 지정된 오프셋 값만큼 이동합니다.
// 4行目4列目に移動して横200lpx縦200pxに移動する
drawings[0].setPosition(4, 4, 200, 200)
할 수 없는 일
이번 클래스에서는 다음을 할 수 없습니다. 향후 추가 출시를 기대하자.
- 도형 추가
- 도형 복제
- 도형 모양의 변형
활용 예
이번에 구현된 것으로 생각한 활용예가 됩니다.
아직도, 미숙한 상태의 클래스입니다만, 사용법에 따라서도 여러가지로 할 수 있는 것이 되어 있습니다.
1. 처리 중 조작 보호
도형을 화면 가득 넓히는 것에 의해 셀의 조작을 불가능하게 합니다.
무거운 처리를 쓸 때 셀이 조작됨으로써 에러로 떨어질 때 등에 사용할 수 있습니다
function coverCell() {
const drawings =
SpreadsheetApp.
getActiveSheet()
.getDrawings();
// 高さと横幅変更[
drawings[0].setWidth(1920)
drawings[0].setHeight(1080)
// 場所変更
drawings[0].setPosition(1, 1, 0, 0)
// … 処理後 …
// 高さと横幅変更
drawings[0].setWidth(1)
drawings[0].setHeight(1)
// 場所変更
drawings[0].setPosition(1, 1, 0, 0)
}
덧붙여서 사이즈 변경시에 최소의 1px를 지정하면 클릭이 불가능한 상태가 됩니다.
0을 지정한 경우는 가로는 450px 세로는 325px로 자동 할 수 있게 설정됩니다.
2. 진행 바
이쪽도 무거운 처리의 경우를 위한 예입니다.
무거운 처리를 쓸 때 사용자화에서 화면이 바뀌지 않기 때문에 제대로 움직이고 있는지 모른다는 의견을 자주 받을 때가 있습니다만, 그럴 때 활용할 수 있는 예입니다.
두 개의 셰이프를 사용하여 처리에 맞게 진행률 막대를 움직이면서 처리 중에 어필할 수 있습니다.
TIPS로서 확대시에 애스펙트비가 바뀌는 경우는 선은 그다지 사용하지 않는 편이 좋을 것입니다.
확대시에 선은 종횡비에 맞추어 재묘사는 되지 않고 세로선 가로선의 폭이 변화해 버립니다.
function progressbar() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const width = 500
const Height = 100
const drawings = spreadsheet.getSheetByName('進捗バー').getDrawings()
window = drawings[0]
progress = drawings[1]
// 初期化
window.setHeight(Height)
window.setWidth(width)
window.setPosition(1, 1, 0, 0)
progress.setHeight(100)
progress.setWidth(1) // \進捗ゼロ!/
progress.setPosition(1, 1, 0, 0)
for(var i = 1; i <= 100; i++){
progress.setWidth((width/100) * i)
}
3. 게임
게임은 가까운 시일 내에 다른 기사에서 하기 때문에 자주 기다려 주세요.
요약
새롭게 추가된 DrawingClass입니다만, 예로부터도 느끼는 대로 또 하나의 기능이 원하는 상태였습니다.
그래도 지금까지 조작할 수 없었던 도형 주위를 움직일 수 있다고 하는 것이므로, 만약 어떠한 방법을 하면 가르쳐 주실 수 있으면 다행입니다.
나도 계속 워치 해 나가려고 생각합니다.
Reference
이 문제에 관하여(GoogleAppsScript의 Drawing Class로 만들어 놀자!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/godan09/items/f5c6d78d6afa1a44342f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)