Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
最近のGASのアプデの話をしよう
godan
June 24, 2020
Programming
0
39
最近のGASのアプデの話をしよう
godan
June 24, 2020
Tweet
Share
More Decks by godan
See All by godan
godan
0
10
godan
1
220
godan
2
120
godan
1
22
godan
2
65
godan
0
70
Other Decks in Programming
See All in Programming
grapecity_dev
0
170
grapecity_dev
0
170
manfredsteyer
PRO
0
120
mehowte
0
180
suzukiot
0
250
makomakok
0
150
legalforce
PRO
0
610
saten
1
170
mploed
3
160
christianweyer
PRO
0
270
meemeelab
0
280
abeta
1
170
Featured
See All Featured
holman
461
280k
orderedlist
PRO
328
36k
hatefulcrawdad
257
17k
productmarketing
5
710
edds
56
9.4k
hursman
107
9.2k
malarkey
119
16k
eitanlees
112
10k
notwaldorf
15
1.8k
erikaheidi
14
4.3k
paulrobertlloyd
71
3.6k
jonrohan
1022
380k
Transcript
最近のアプデの 話をしよう 株式会社ガイアックス ソーシャルメディア事業部 Godan.m
Godan.m Twitter: @godan09 株式会社ガイアックス ソーシャルメディアマーケティング事業部所属 肩書はエンジニア 最近は動画や配信業がメイン 技術ツイートより料理ツイートが 伸びるのが最近の悩み 去年はAppMakerとGASを会計業務周りで
半年以上やってました
最近同人誌を出しました グッドバイ アップメーカー booth.pm またはbookwakerで300円です! 自称AppMaker界隈最期の入門書です。 買っても良いことはないと思います。
さて
最近皆様 GASのアップデートは 追っていらっしゃいますか?
None
祝 V8正式対応
今日はこの話をしません
\気になる方はこちら/ いつも隣にITのお仕事 https://tonari-it.com/gas-v8-runtime/
今日はこっち
Simple Trigger: onSelectionChange(e)
この話をしたかったのですが…
この話をしたかったのですが…
Drawing Class
DrawingClass - 今年4/2に追加された スプレットシートサービスのクラス - スプレットシート上の図形を操作、削除できる
DrawingClass - 実装されているメゾット getContainerInfo() getHeight() getOnAction() getSheet() getWidth() getZIndex() remove()
setHeight(height) setOnAction(macroName) setPosition(RowPos, ColPos, x, y) setWidth(width) setZIndex(zIndex)
とりあえず使ってみる
本日のサンプルは 明日辺りに公開します
シート上の図形をログに書き出す function printDrawingClass() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); Logger.log(drawings) }
シート上の図形をログに書き出す
図形のサイズなどを取得する function printDrawSize() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); // 縦(pixels) Logger.log(drawings[0].getHeight())
// 横(pixels) Logger.log(drawings[0].getWidth()) // 重なり順(数字が大きいものほど手前になります ) Logger.log(drawings[0].getZIndex()) // 設置されてるシート名 Logger.log(drawings[0].getSheet()) }
図形のサイズなどを取得する
図形の位置を取得する 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()) }
図形の位置を取得する
図形の位置を取得する function moveFigure() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); // 高さと横幅変更[ drawings[0].setWidth(200)
drawings[0].setHeight(200) // 場所変更 drawings[0].setPosition(4, 4, 200, 200) }
図形の位置とサイズを変える
図形の位置とサイズを変える
図形の位置とサイズを変える
結構シンプルな作り
図形の追加や複製はできない (やり方を知ってる方いたら教えて下さい )
今後の追加を楽しみにしましょう
Drawing 活用法
正直活用しづらい…
作例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) }
重い処理中データが触れないようにする
重い処理中データが触れないようにする
重い処理中データが触れないようにする
重い処理中データが触れないようにする 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) } ちなみに0を指定すると 450px x 325pxになる
作例2. 重い処理中データの進捗バー
プログレスバーを作る - 枠線を使う場合は想定される縦 横比を使う - 枠線使わなくていいなら使わな いほうが楽です
プログレスバーを作る 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) } }
プログレスバーを作る
ループ内で描画を繰り返せば アニメーションになる…?
位置が取れて
処理に合わせて位置を変更できる
・
・・
・・・
ゲームが 作れるのでは?
None
デモ
・
・・
・・・
Unityを 使おう
Unityを 使おう