Submit Search
Upload
パフォーマンスの良いGASの書き方 Best Practice
•
Download as PPTX, PDF
•
20 likes
•
16,238 views
啓介 大橋
Follow
Atmosphere Tokyo 2014 Sandbox Session. gcp ja night × TokyoGAS Day2 GAS Session.
Read less
Read more
Technology
Report
Share
Report
Share
1 of 70
Download now
Recommended
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
われわれはなぜアジャイルに向かうのか
われわれはなぜアジャイルに向かうのか
toshihiro ichitani
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
Developers Summit
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
AbemaTVの動画配信を支えるサーバーサイドシステム
AbemaTVの動画配信を支えるサーバーサイドシステム
yuichiro nakazawa
3DESの件 〜俺、112bitになります〜
3DESの件 〜俺、112bitになります〜
enigma63
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
Recommended
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
われわれはなぜアジャイルに向かうのか
われわれはなぜアジャイルに向かうのか
toshihiro ichitani
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
Developers Summit
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
AbemaTVの動画配信を支えるサーバーサイドシステム
AbemaTVの動画配信を支えるサーバーサイドシステム
yuichiro nakazawa
3DESの件 〜俺、112bitになります〜
3DESの件 〜俺、112bitになります〜
enigma63
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
monochrojazz
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
正しいものを正しくつくる
正しいものを正しくつくる
toshihiro ichitani
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
AWS Black Belt Online Seminar 2018 AWS上の位置情報
AWS Black Belt Online Seminar 2018 AWS上の位置情報
Amazon Web Services Japan
セキュリティを楽しむ(CTFとbugbountyの始め方)
セキュリティを楽しむ(CTFとbugbountyの始め方)
kazkiti
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか
abend_cve_9999_0001
体系的に学ばないXSSの話
体系的に学ばないXSSの話
Yutaka Maehira
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
Hiroshi Tokumaru
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
UnityTechnologiesJapan002
半日でわかる コンテナー技術 (入門編)
半日でわかる コンテナー技術 (入門編)
Toru Makabe
Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?
啓介 大橋
Google Apps Script活用事例 Tokyo GAS 2013春
Google Apps Script活用事例 Tokyo GAS 2013春
Junya Sato
More Related Content
What's hot
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
monochrojazz
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
正しいものを正しくつくる
正しいものを正しくつくる
toshihiro ichitani
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
AWS Black Belt Online Seminar 2018 AWS上の位置情報
AWS Black Belt Online Seminar 2018 AWS上の位置情報
Amazon Web Services Japan
セキュリティを楽しむ(CTFとbugbountyの始め方)
セキュリティを楽しむ(CTFとbugbountyの始め方)
kazkiti
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか
abend_cve_9999_0001
体系的に学ばないXSSの話
体系的に学ばないXSSの話
Yutaka Maehira
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
Hiroshi Tokumaru
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
UnityTechnologiesJapan002
半日でわかる コンテナー技術 (入門編)
半日でわかる コンテナー技術 (入門編)
Toru Makabe
What's hot
(20)
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
正しいものを正しくつくる
正しいものを正しくつくる
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
AWS Black Belt Online Seminar 2018 AWS上の位置情報
AWS Black Belt Online Seminar 2018 AWS上の位置情報
セキュリティを楽しむ(CTFとbugbountyの始め方)
セキュリティを楽しむ(CTFとbugbountyの始め方)
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか
体系的に学ばないXSSの話
体系的に学ばないXSSの話
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
半日でわかる コンテナー技術 (入門編)
半日でわかる コンテナー技術 (入門編)
Viewers also liked
Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?
啓介 大橋
Google Apps Script活用事例 Tokyo GAS 2013春
Google Apps Script活用事例 Tokyo GAS 2013春
Junya Sato
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
dcubeio
2014-02-20_Tokyo-GAS#5-社内活性化推進にGASを大活用した話
2014-02-20_Tokyo-GAS#5-社内活性化推進にGASを大活用した話
Humangas
GCPUG Shonan GAS & GAE
GCPUG Shonan GAS & GAE
啓介 大橋
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
Yuki Katada
1019 まぁ!簡単!google apps script入門
1019 まぁ!簡単!google apps script入門
Tatsuya Kosuge
Qualité de l'air et hygiène industrielle
Qualité de l'air et hygiène industrielle
Maxime Archaqmbault
18.3 Каталог решений - Гражданское строительство EKF
18.3 Каталог решений - Гражданское строительство EKF
Igor Golovin
Real estate – real fact 2
Real estate – real fact 2
Biswajit Das. "Relationship Beyond Advising."
Vyklikajte si obyvateľov na mape vo svojom okolí
Vyklikajte si obyvateľov na mape vo svojom okolí
Peter Fusek
Campamentos de verano Barbadillo 2017 BURGOS
Campamentos de verano Barbadillo 2017 BURGOS
Veleta3000
Campamentos de verano Molino de Butrera 2017 Burgos
Campamentos de verano Molino de Butrera 2017 Burgos
Veleta3000
Campamento de Verano Imagina 2017 Bedmar Jaen
Campamento de Verano Imagina 2017 Bedmar Jaen
Veleta3000
Campamentos de verano Molino de Butrera inmersion INGLES 2017 BURGOS
Campamentos de verano Molino de Butrera inmersion INGLES 2017 BURGOS
Veleta3000
TIM SA - podsumowanie 2016 roku
TIM SA - podsumowanie 2016 roku
TIM SA
Xero in on your trade clients
Xero in on your trade clients
Christian Newman (C.A.)
Checklist om je huwelijk tot in de puntjes te plannen
Checklist om je huwelijk tot in de puntjes te plannen
KBC Bank en Verzekeringen
Junta Astorga 2017 03 28
Junta Astorga 2017 03 28
Mauricio Lema
Campamentos de verano La Data 2017 Segovia
Campamentos de verano La Data 2017 Segovia
Veleta3000
Viewers also liked
(20)
Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?
Google Apps Script活用事例 Tokyo GAS 2013春
Google Apps Script活用事例 Tokyo GAS 2013春
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
2014-02-20_Tokyo-GAS#5-社内活性化推進にGASを大活用した話
2014-02-20_Tokyo-GAS#5-社内活性化推進にGASを大活用した話
GCPUG Shonan GAS & GAE
GCPUG Shonan GAS & GAE
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
1019 まぁ!簡単!google apps script入門
1019 まぁ!簡単!google apps script入門
Qualité de l'air et hygiène industrielle
Qualité de l'air et hygiène industrielle
18.3 Каталог решений - Гражданское строительство EKF
18.3 Каталог решений - Гражданское строительство EKF
Real estate – real fact 2
Real estate – real fact 2
Vyklikajte si obyvateľov na mape vo svojom okolí
Vyklikajte si obyvateľov na mape vo svojom okolí
Campamentos de verano Barbadillo 2017 BURGOS
Campamentos de verano Barbadillo 2017 BURGOS
Campamentos de verano Molino de Butrera 2017 Burgos
Campamentos de verano Molino de Butrera 2017 Burgos
Campamento de Verano Imagina 2017 Bedmar Jaen
Campamento de Verano Imagina 2017 Bedmar Jaen
Campamentos de verano Molino de Butrera inmersion INGLES 2017 BURGOS
Campamentos de verano Molino de Butrera inmersion INGLES 2017 BURGOS
TIM SA - podsumowanie 2016 roku
TIM SA - podsumowanie 2016 roku
Xero in on your trade clients
Xero in on your trade clients
Checklist om je huwelijk tot in de puntjes te plannen
Checklist om je huwelijk tot in de puntjes te plannen
Junta Astorga 2017 03 28
Junta Astorga 2017 03 28
Campamentos de verano La Data 2017 Segovia
Campamentos de verano La Data 2017 Segovia
Similar to パフォーマンスの良いGASの書き方 Best Practice
Tokyo r33 beginner
Tokyo r33 beginner
Takashi Minoda
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
spring_raining
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
Aizu lt tokyo_luxion
Aizu lt tokyo_luxion
Tomoaki Tamura
CoffeeScript
CoffeeScript
Ryo Maruyama
Favtile ~never write JS again~
Favtile ~never write JS again~
hanachin
リーダブルコード 第二章
リーダブルコード 第二章
Yuto Ogi
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
Toshi Harada
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
NTT DATA OSS Professional Services
Groovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjug
kyon mm
Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~
Takaaki Tanaka
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
Kazuya Hiruma
フロント作業の効率化
フロント作業の効率化
Yuto Yoshinari
PostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQL
Noriyoshi Shinoda
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
Toshi Harada
Introduction to Spock
Introduction to Spock
Takahiro Sugiura
Similar to パフォーマンスの良いGASの書き方 Best Practice
(20)
Tokyo r33 beginner
Tokyo r33 beginner
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
Aizu lt tokyo_luxion
Aizu lt tokyo_luxion
CoffeeScript
CoffeeScript
Favtile ~never write JS again~
Favtile ~never write JS again~
リーダブルコード 第二章
リーダブルコード 第二章
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
Groovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjug
Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
フロント作業の効率化
フロント作業の効率化
PostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQL
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
Introduction to Spock
Introduction to Spock
More from 啓介 大橋
App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -
啓介 大橋
Dockerハンズオン
Dockerハンズオン
啓介 大橋
Fusion360 meetup vol2 LT
Fusion360 meetup vol2 LT
啓介 大橋
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
啓介 大橋
Tokyo gas #5_whatsnewinappsscript_公開用
Tokyo gas #5_whatsnewinappsscript_公開用
啓介 大橋
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart
啓介 大橋
More from 啓介 大橋
(6)
App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -
Dockerハンズオン
Dockerハンズオン
Fusion360 meetup vol2 LT
Fusion360 meetup vol2 LT
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
Tokyo gas #5_whatsnewinappsscript_公開用
Tokyo gas #5_whatsnewinappsscript_公開用
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart
Recently uploaded
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Recently uploaded
(9)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
パフォーマンスの良いGASの書き方 Best Practice
1.
2.
3.
しょっちゅう 「XXXってサイトにある、 このサンプルコードを コピーして使ってるのだけど、 うちの会社のデータ件数だと タイムアウトしちゃうんです。 どうにか助けて下さい」 って言われて、毎回同じ内容で返答していて、 流石に疲れてきたので ちゃんとパフォーマンスの話をするからお前ら聞 いてろ下さい
4.
5.
6.
何やってる?
7.
8.
@soundTricker318 http://goo.gl/ZpUOs
9.
http://www.bfts.co.jp
10.
11.
Contents うそ… 私のスクリプト 遅すぎ? パフォーマンス の良い書き方 まとめ Start End
12.
う そ ・ ・ ・ 私 の ス ク リ プ ト 遅 す ぎ ・ ・ ・ ? http://www.pakutaso.com/
13.
公式ドキュメントにも 有りますが…
14.
• GASは書き方によって非常にパフォーマンスが変 わります。 うそ…私の…
15.
質問
16.
GASを使ったことがある人? 質問
17.
GASでサンプルコードを コピーして 使ったことがある人? 質問
18.
GASでサンプルコードを コピーして 社内のシステムとして 使っている人? 質問
19.
GASでサンプルコードを コピーして 社内のシステムとして 使ってタイムアウトした人? 質問
20.
• 巷のサンプルコードは比較的パフォーマンスが 悪いコードを書いている – 公式ドキュメントに書いてある書き方を守ってな いことが多い •
https://developers.google.com/apps- script/best_practices?hl=ja – 多分読みやすくするためにそうしているのだと思い ます。 サンプルコード…
21.
• パフォーマンスが悪いコードを使うと… –処理が終わらなくてタイムアウトする –なんかGASで作るの嫌になる –GAS遅い…と言いふらすようになる –困る サンプルコード
22.
パ フ ォ ー マ ン ス の 良 いス ク リ プ ト で い い 感 じ に http://www.pakutaso.com/
23.
パフォーマンスの良い スクリプトの書き方
24.
25.
26.
27.
• Spreadsheetに色つける処理 –データは100×100セル –セルに「hoge」と書いてあったら黄色に –ないなら無職 今回の処理
28.
以下のコードをSpreadsheet上のGASで実行すれば作れます。 今回の処理 var arr =
["hoge", "fuga", "foo", "bar" , "bus", "あいうえお", "かきくけこ"]; function make() { var grid = []; var header = []; for (var c = 0; c < 100; c++) { header.push(c + 1); } grid.push(header); for (var r = 1; r < 101; r++) { var row = []; for (var c = 0; c < 100; c++) { row.push(arr[Math.floor(Math.random() * arr.length)]); } grid.push(row); } SpreadsheetApp.getActiveSheet().getRange(1, 1, 101, 100).clear().setValues(grid); }
29.
30.
function badCode() { var
spreadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqS ZrCHMCRL-LEEqQK2n4yQO-o/edit#gid=0"); for(var row = 2; row <= 101; row++) { for(var col = 1; col <= 100; col++) { var value = spreadsheet.getSheetByName("シート1").getRange(row, col).getValue(); if (value == "hoge") { spreadsheet.getSheetByName("シート1").getRange(row, col).setBackground("yellow"); } } } } 悪いコード
31.
32.
function goodCode() { var
spreadsheet = SpreadsheetApp.openById("1kzi8pXTZZrABgTGbJFqSZrCHMCRL-LEEqQK2n4yQO-o"); var backgrounds = []; var sheet = spreadsheet.getSheetByName("シート1"); var targetRange = sheet.getRange(2, 1, 100, 100); var values = targetRange.getValues(); for(var rowIndex = 0; rowIndex < values.length; rowIndex++) { var row = values[rowIndex]; var backgroundRow = []; for(var colIndex = 0; colIndex < row.length; colIndex++) { var value = row[colIndex]; if (value == "hoge") { backgroundRow.push("yellow"); } else { backgroundRow.push(""); } } backgrounds.push(backgroundRow); } targetRange.setBackgrounds(backgrounds); } 良いコード
33.
①悪い部分を知る
34.
• 遅い理由を知らないとどこを直してよいかわか りません – 実行トランスクリプトを使ってどこに時間がかかっ ているか確認する ①悪い部分を知る
35.
①悪い部分を知る
36.
②無駄なAPIアクセス を減らす
37.
• GASのService呼び出しは全てネットワーク経由で行 われるため、時間がかかります。 少しでも無駄な呼び出しはしないようにします。 ②減らす ネットワーク経由
38.
function badCode() { var
spreadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqS ZrCHMCRL-LEEqQK2n4yQO-o/edit#gid=0"); for(var row = 2; row <= 101; row++) { for(var col = 1; col <= 100; col++) { var value = spreadsheet.getSheetByName("シート1").getRange(row, col).getValue(); if (value == "hoge") { spreadsheet.getSheetByName("シート1").getRange(row, col).setBackground("yellow"); } } } } ②減らす
39.
function badCode() { var
spreadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL- LEEqQK2n4yQO-o/edit#gid=0"); var sheet = spreadsheet.getSheetByName("シート1"); for(var row = 2; row <= 101; row++) { for(var col = 1; col <= 100; col++) { var range = sheet.getRange(row, col); var value = range.getValue(); if (value == "hoge") { range.setBackground("yellow"); } } } } ②減らす
40.
③なるべく1度にする
41.
• ②同じ原理でより呼び出し回数を減らすために getValues,setBackgrounds等のBatch Operationを 利用します。 ③1度にする 通常のgetValue() getValue() 1セルで1回アクセス
= 100×100回アクセス
42.
• ②同じ原理でより呼び出し回数を減らすために getValues,setBackgrounds等のBatch Operationを 利用します。 ③1度にする getValues() getValues) 100×100セルを1回アクセス
= 1回アクセス
43.
function badCode() { var
spreadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL- LEEqQK2n4yQO-o/edit#gid=0"); var sheet = spreadsheet.getSheetByName("シート1"); for(var row = 2; row <= 101; row++) { for(var col = 1; col <= 100; col++) { var range = sheet.getRange(row, col); var value = range.getValue(); if (value == "hoge") { range.setBackground("yellow"); } } } } ③1度にする
44.
function badCode() { var
spreadsheet = SpreadsheetApp .openByUrl("https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL-LEEqQK2n4yQO-o/edit#gid=0"); var backgrounds = []; var sheet = spreadsheet.getSheetByName("シート1"); var targetRange = sheet.getRange(2, 1, 100, 100); var values = targetRange.getValues(); for(var rowIndex = 0; rowIndex < values.length; rowIndex++) { var row = values[rowIndex]; var backgroundRow = []; for(var colIndex = 0; colIndex < row.length; colIndex++) { var value = range.getValue(); if (value == "hoge") { backgrounds.push("yellow"); } else { backgrounds.push(“"); } } backgrounds.push(backgroundRow); } targetRange.setBackgrounds(backgrounds); } ③1度にする
45.
• 大体のスクリプトはこの②、③を実施すればかなりパ フォーマンスが良くなります。
46.
④ 我に返る
47.
• 今回の処理はGASでやる必要がありません。 Sheetsの標準機能でやれることはそっちでやりましょ う – 今回のはセルの条件付き書式でできます。 –
新しいSpreadsheetはかなり細かい書式が使えるので 確認して下さい。 ④我に返る
48.
49.
openByIdとopenByUrl
50.
• Spreadsheet,Forms自体などを取得する際に利用す るopenByIdとopenByUrlというメソッドが有ります。 • これらは比較的openByIdの方が速い –
IDはURL中のなんかよくわかない文字の部分がだいたいそれ openByIdとUrl https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL-LEEqQK2n4yQO- o/edit#gid=0
51.
UiApp
52.
• UiAppを利用するときはなるべくClientHandler等ク ライアントサイドで動くイベントハンドラを活用する – UiAppのイベントハンドラは上記以外は全てサーバコールに なりおっそい –
適切にClientHandlerを利用するとかなりUXがよくなる UiApp
53.
HtmlService
54.
• HtmlServiceのパフォーマンスを良くする書き方の話も公式 ページに乗っている HtmlService
55.
• 基本的には – データの取得は非同期に行う •
doGet内などHtmlService呼び出し前に行わない – <html>,<head>,<body>タグなどは利用しない • cajaにより自動的に<caja-v-html>に変えられるので意味が無い • 変えられる分時間がかかるので使わない – Javascriptは最後に読み込む • <script>タグはファイルの一番末尾に書いておく • そのほうが画面が表示されてからクライアントサイドのJavascriptが実行される HtmlService
56.
• 大橋の感覚として – 外部のJSやCSSは使わない方が良い •
使う場合は<script src=“xxx”>とはせず、<script>ここにコピペ</script>して、埋 め込んでしまう。 • cajaはGoogle経由で外部JS、CSSを取得するので遅い – 画面遷移はJavascriptを使って一部分だけ切り替える • doGetを毎回すると遅い • SPA(Single Page Application)の様にJSで画面を切り替えたほうが速い • というより画面切り替えはしないほうが良い HtmlService
57.
どうしても遅い
58.
• どうしても遅い時は… – UrlFetchAppを利用してGoogle
APIを直接呼び出す。 – 直接呼び出すと、欲しいデータが1回の操作で取得できる場 合がある • CalendarAppやDriveAppなどでよくある • fieldsパラメータを利用すると不要なデータを取得しない ためネットワーク的にも良い どうしても遅い
59.
• どうしても遅い時は… – 本当にリアルタイム(わざわざ人が待って)でやる必 要があるか考える •
Triggerを利用して遅延実行 & 通知でも良いのではない か? • 朝一回実行すれば大丈夫なんじゃないか? • 実行タイミングは定期的でも良いのじゃないか? どうしても遅い
60.
• どうしても遅い時は… – ちゃんとGASで作って良いのか考える –
金で解決できるのならGAEやGCPを使ったほうが良 い – SpreadsheetをDBとして使っている場合もそう • 大量のデータなら場合によってはFusion Table もっと多いならBigQueryを検討 どうしても遅い
61.
62.
まとめ
63.
GASで 困ったら
64.
#gasja
65.
Google Apps API
Japan http://goo.gl/FcU0C
66.
@soundTricker318 http://goo.gl/ZpUOs
67.
会社: http://goo.gl/CfVPf 個人: http://goo.gl/kVTv3
Editor's Notes
https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL-LEEqQK2n4yQO-o/edit#gid=0
https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL-LEEqQK2n4yQO-o/edit#gid=0
https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL-LEEqQK2n4yQO-o/edit#gid=0
https://docs.google.com/spreadsheets/d/1kzi8pXTZZrABgTGbJFqSZrCHMCRL-LEEqQK2n4yQO-o/edit#gid=0
Download now