Slide 1

Slide 1 text

最近のアプデの 話をしよう 株式会社ガイアックス ソーシャルメディア事業部 Godan.m

Slide 2

Slide 2 text

Godan.m Twitter: @godan09 株式会社ガイアックス ソーシャルメディアマーケティング事業部所属 肩書はエンジニア 最近は動画や配信業がメイン 技術ツイートより料理ツイートが 伸びるのが最近の悩み 去年はAppMakerとGASを会計業務周りで 半年以上やってました

Slide 3

Slide 3 text

最近同人誌を出しました グッドバイ アップメーカー booth.pm またはbookwakerで300円です! 自称AppMaker界隈最期の入門書です。 買っても良いことはないと思います。

Slide 4

Slide 4 text

さて


Slide 5

Slide 5 text

最近皆様
 GASのアップデートは
 追っていらっしゃいますか?


Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

祝 V8正式対応


Slide 8

Slide 8 text

今日はこの話をしません


Slide 9

Slide 9 text

\気になる方はこちら/
 いつも隣にITのお仕事 https://tonari-it.com/gas-v8-runtime/

Slide 10

Slide 10 text

今日はこっち


Slide 11

Slide 11 text

Simple Trigger: onSelectionChange(e)

Slide 12

Slide 12 text

この話をしたかったのですが…


Slide 13

Slide 13 text

この話をしたかったのですが…


Slide 14

Slide 14 text

Drawing Class

Slide 15

Slide 15 text

DrawingClass - 今年4/2に追加された スプレットシートサービスのクラス - スプレットシート上の図形を操作、削除できる

Slide 16

Slide 16 text

DrawingClass - 実装されているメゾット getContainerInfo() getHeight() getOnAction() getSheet() getWidth() getZIndex() remove() setHeight(height) setOnAction(macroName) setPosition(RowPos, ColPos, x, y) setWidth(width) setZIndex(zIndex)

Slide 17

Slide 17 text

とりあえず使ってみる

Slide 18

Slide 18 text

本日のサンプルは 明日辺りに公開します

Slide 19

Slide 19 text

シート上の図形をログに書き出す function printDrawingClass() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); Logger.log(drawings) }

Slide 20

Slide 20 text

シート上の図形をログに書き出す

Slide 21

Slide 21 text

図形のサイズなどを取得する 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()) }

Slide 22

Slide 22 text

図形のサイズなどを取得する

Slide 23

Slide 23 text

図形の位置を取得する 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()) }

Slide 24

Slide 24 text

図形の位置を取得する

Slide 25

Slide 25 text

図形の位置を取得する function moveFigure() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); // 高さと横幅変更[ drawings[0].setWidth(200) drawings[0].setHeight(200) // 場所変更 drawings[0].setPosition(4, 4, 200, 200) }

Slide 26

Slide 26 text

図形の位置とサイズを変える

Slide 27

Slide 27 text

図形の位置とサイズを変える

Slide 28

Slide 28 text

図形の位置とサイズを変える

Slide 29

Slide 29 text

結構シンプルな作り

Slide 30

Slide 30 text

図形の追加や複製はできない (やり方を知ってる方いたら教えて下さい )

Slide 31

Slide 31 text

今後の追加を楽しみにしましょう

Slide 32

Slide 32 text

Drawing 活用法

Slide 33

Slide 33 text

正直活用しづらい…

Slide 34

Slide 34 text

作例1. 重い処理中データが触れないようにする

Slide 35

Slide 35 text

重い処理中データが触れないようにする 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) }

Slide 36

Slide 36 text

重い処理中データが触れないようにする

Slide 37

Slide 37 text

重い処理中データが触れないようにする

Slide 38

Slide 38 text

重い処理中データが触れないようにする

Slide 39

Slide 39 text

重い処理中データが触れないようにする 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になる

Slide 40

Slide 40 text

作例2. 重い処理中データの進捗バー

Slide 41

Slide 41 text

プログレスバーを作る - 枠線を使う場合は想定される縦 横比を使う - 枠線使わなくていいなら使わな いほうが楽です

Slide 42

Slide 42 text

プログレスバーを作る 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) } }

Slide 43

Slide 43 text

プログレスバーを作る

Slide 44

Slide 44 text

ループ内で描画を繰り返せば アニメーションになる…?

Slide 45

Slide 45 text

位置が取れて

Slide 46

Slide 46 text

処理に合わせて位置を変更できる

Slide 47

Slide 47 text

Slide 48

Slide 48 text

・・

Slide 49

Slide 49 text

・・・

Slide 50

Slide 50 text

ゲームが
 作れるのでは?


Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

デモ


Slide 53

Slide 53 text

Slide 54

Slide 54 text

・・

Slide 55

Slide 55 text

・・・

Slide 56

Slide 56 text

Unityを
 使おう


Slide 57

Slide 57 text

Unityを
 使おう