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
620
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
99
僕の イベントスタッフ 装備の最適解
godan
2
170
YAPC::Hakodateの映像記録を支える技術
godan
5
670
ミシンと刺繍とOSS
godan
3
200
Nest Hubがある生活
godan
2
120
オンライン配信の始め方
godan
3
210
SOFT SKILLSは定期的に読み返したくな良書
godan
2
110
Discord Embede SDK入門…… してみたかった話
godan
1
560
今年どれだけ本読んだ?
godan
0
140
Other Decks in Programming
See All in Programming
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
140
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
3
1.5k
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
770
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
150
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
140
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
330
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.5k
継続モナドとリアクティブプログラミング
yukikurage
3
610
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Site-Speed That Sticks
csswizardry
13
1.3k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
500
Discover your Explorer Soul
emna__ayadi
2
1.2k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
First, design no harm
axbom
PRO
2
1.2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
630
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
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を 使おう