Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
最近のGASのアプデの話をしよう
Search
godan
June 24, 2020
Programming
640
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
最近のGASのアプデの話をしよう
godan
June 24, 2020
Transcript
57 slides
最近のアプデの 話をしよう 株式会社ガイアックス ソーシャルメディア事業部 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を 使おう
More Decks by godan
See All by godan
献立を支える技術
godan
1
140
僕の イベントスタッフ 装備の最適解
godan
2
190
YAPC::Hakodateの映像記録を支える技術
godan
5
700
ミシンと刺繍とOSS
godan
3
220
Nest Hubがある生活
godan
2
140
オンライン配信の始め方
godan
3
230
SOFT SKILLSは定期的に読み返したくな良書
godan
2
130
Discord Embede SDK入門…… してみたかった話
godan
1
600
今年どれだけ本読んだ?
godan
0
150
Other Decks in Programming
See All in Programming
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
340
Seven New Principles of Software Engineering
yegor256
0
500
Crash Auto Pipelines
veronikapj
1
410
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
5.8k
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
120
Scalaの型でマルチテナントの認可を守る
nextbeatdev
0
110
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
190
Getting Started with Vibe Coding
miccheng
0
220
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
330
エラーチャンネルのボールを拾い続けて鍛えるエンジニアの地力 / phpcon-niigata2026
meihei3
1
140
疎結合とは何か?ソフトウェア設計における結合バランスについて考える #phpcon_niigata
kajitack
0
130
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
380
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
470
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
320
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
60k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Building AI with AI
inesmontani
PRO
1
1.4k
Between Models and Reality
mayunak
4
580
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
770