Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
最近のGASのアプデの話をしよう
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
godan
June 24, 2020
Programming
610
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
最近のGASのアプデの話をしよう
godan
June 24, 2020
More Decks by godan
See All by godan
献立を支える技術
godan
1
94
僕の イベントスタッフ 装備の最適解
godan
2
170
YAPC::Hakodateの映像記録を支える技術
godan
5
660
ミシンと刺繍とOSS
godan
3
190
Nest Hubがある生活
godan
2
120
オンライン配信の始め方
godan
3
200
SOFT SKILLSは定期的に読み返したくな良書
godan
2
110
Discord Embede SDK入門…… してみたかった話
godan
1
550
今年どれだけ本読んだ?
godan
0
140
Other Decks in Programming
See All in Programming
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.1k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
110
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
170
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
120
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
140
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
180
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
470
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
440
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
630
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
560
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
HDC tutorial
michielstock
2
690
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
Deep Space Network (abreviated)
tonyrice
0
170
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
300
Faster Mobile Websites
deanohume
310
31k
The SEO identity crisis: Don't let AI make you average
varn
0
480
Balancing Empowerment & Direction
lara
6
1.1k
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を 使おう