エクセルの神髄
GAS(Google Apps Script)入門

Google Apps Script(GAS)の入門編です
最終更新日:2020-10-10

GAS(Google Apps Script)入門

Google Apps Script(GAS)使ったことが無く、初めて使う方を対象に、出来るだけ平易な解説をしていきます、
また、文法的な話は極力少なめにして、実際に使えるようになることを目指します。


本シリーズでは、
Googleスプレッドシートで、Google Apps Script(GAS)を使いながら、このスクリプト言語を学んで行きます。

Google Apps ScriptがV8ランタイムをサポート

2020年2月、Google Apps Scriptが「V8ランタイム」と呼ばれるJavaScriptエンジンをサポートしました。
GASでV8ランタイムがサポートされたことで、ECMAScriptの構文が使用できるようになりました。
このGAS入門で扱っているGASのコードは極めて基本的なものばかりなので、V8移行による影響はありません。


とにかくGASをやってみよう

第1回.GASって何? Google Apps Scriptって何?
GoogleAppsScriptは、Googleが提供するサーバーサイド・スクリプト環境で、GoogleAppsScriptの頭文字をとって、GASと省略されます。GoogleAppsは、クラウドのグループウェアツール群ですが、GASは、Googleドキュメント専用ではなく、Googleが提供するサービス全般で利用できるスクリプトです。
「マクロ機能」と「V8ランタイム」について追記しました。
GoogleAppsScriptは、Googleが提供するサーバーサイド・スクリプト環境で、GoogleAppsScriptの頭文字をとって、GASと省略されます。GoogleAppsは、クラウドのグループウェアツール群ですが、GASは、Googleドキュメント専用ではなく、Googleが提供するサービス全般で利用できるスクリプトです。

第2回.とにかく書いてみよう(スクリプト エディタ)
GoogleAppsScript(GAS)は、Googleが提供するサービス全般で利用できるスクリプトですと説明しました、では、そのスクリプトは、どこに・どのように書くのでしょうか。本シリーズでは、Googleスプレッドシートで、GoogleAppsScriptを使って行きますので、何はともあれ、スプレッドシートを用意しましょう。

第3回.スクリプトを実行するには
GoogleAppsScriptを書いたら実行して結果を確認します、正しく書けていれば、期待した結果になりますが、間違っていれば、エラーになったり期待外れの結果となります。前回書いたスクリプト functionmyFunction(){ Browser.msgBox("HelloWorld&quot",

第4回.セルに数字や文字を入れる
GoogleAppsScriptでスプレッドシートのセルに値を入れてみます、スプレッドシートを扱うのですから、まずはセルを扱う事から始めます。スプレッドシートを開いて、スクリプトエディタを起動してください。前回作成したfunctionの下に、新しいfunctionを追加します。

第5回.変数って何だ?
プログラミングを始めて、最初に変数で躓く人が多いようです、変数が使えなければプログラムは書けません、GoogleAppsScriptでの変数について解説します。スクリプトの書き方については、前回までの記事でしっかり習得しておいてください。今回からは、結果のスクリプトのみ掲載し、詳細な書き順は掲載しません。

第6回.セルの値を使って計算する
セルの値を取得し、計算に使い、別のセルに結果を入れる、これを、GoogleAppsScriptではどのように書くかを解説します。セルに値を入れるには、Rangeオブジェクトの、setValueメソッド これを使いました。セルの値を取得するには、Rangeオブジェクトの、getValueメソッド を使います。

第7回.同じ計算を行数分繰り返す
1回だけの処理なら、マクロ(スクリプト)を使わなくても手作業で十分です、同じ処理を繰り返し実行できるところに、マクロ(スクリプト)の最大の良さがあります。前回に続いて、以下の表で、金額=単価×数量 を計算します。前回は、2行目だけを計算しました。

第8回.最終行を取得して繰り返す
データは常に増減します、決まった行数しか処理できないのではこまりますので、データに応じて最終行を取得する必要があります。実際に入っているデータの最終行をいかに取得するかを解説します。前回に続いて、以下の表で、金額=単価×数量 の計算を、データ行数が増減しても対応できるようにスクリプトを書き直します。

第9回.コメントの書き方
GoogleAppsScriptはプログラミング言語です、基本は英文ですが、英文そのものではなく、単語の組み合わせ、単語の省略形、記号等で出来ています、適宜コメントを書いて、わかり易くしておくことはとても重要です。スクリプトの実行に関係のないコメントの事を、コメントアウトと言います。

第10回.条件で処理を変える(条件分岐,if)
セルの値等の条件により処理内容を変更する条件分岐です、プログラムとは、処理手順であり、突き詰めれば、条件分岐しながら繰り返し処理を行うものです。以下の表で条件分岐を具体例を説明します。やることは、E列合否:合計点が210以上なら"○"、以外は"×" F列特待生:合計が240以上で、

第11回.条件で処理を変える(条件分岐,switch)
条件分岐のifは2分岐です、trueかfalseかです、多分岐(多肢選択)の場合は、if~elseifを使いますが、別の書き方として、switch文があります。前回使用した、以下の表で条件分岐を具体例を説明します。やることは、G列クラス:合計点が250以上なら"A"、230以上なら"B"、

第12回.表範囲をまとめて消去する
プログラミングにおいて、出力先を初期クリアしておくことは基本です、スプレッドシートで、あるシートから別のシートに集計・編集出力する時にも、出力先のシートは、初期クリアしておく必要があります。まずは、セルの値を消す方法です。セルの値の消去 setValueで、空文字を入れる。

第13回.セルに書式を設定する
スプレッドシートでは、主に表を作成し、データの入力・編集を行いますが、やはり、見栄えも重要な要素になってきます、見栄え良く、見やすい表になるように書式設定をします。以下の表を使います。上の何も書式設定されていない表を、下の表のように書式設定します。

第14回.複数のシートを扱う
スプレッドシートを使っていて、一つのシートで済むことはむしろ少ないと思います、GoogleAppsScriptで、複数のシートを扱う時のスクリプトの書き方になります。シートは以下のように、シート1 シート2 の二つがあるとして、シート1がアクティブ、つまりシート1を選択している状態で、解説を進めます。

第15回.複数のスプレッドシートを扱う
GoogleAppsScriptで、他のスプレッドシート(他のブック)のセル値を取得・変更する場合の解説です、IMPORTRANGE関数を使えば良いのですが、GASで処理したい場合も出て来ます。そもそも、スプレッドシートでは、IMPORTRANGE関数を使って他のブックのデータを簡単に取得できます。


GASの文法を基礎から

第16回.Google Apps Scriptの文法を再確認
「GoogleAppsScriptはJavaScript互換言語ですので、JavaScriptの文法に準じます」と本シリーズの第1回で書きましたが、あらためて、JavaScriptの言語仕様、文法について解説します、GoogleAppsScriptは、JavaScript文法とほぼ同じですが、完全に一致しているわけではありません。
第17回.JavaScript リファレンス
JavaScriptの言語リファレンスの抜粋を掲載します、MDN(MOZILLADEVELOPERNETWORK)からの抜粋に、編集・追記したものになります。MDNのJavaScriptのページです、このページの下位に、リファレンスがあります、すべてを網羅したJavaScriptリファレンスです。
第18回.組み込み関数を使う
プログラミング言語は多数ありますが、制御文や演算子は極端な違いはなく、読むだけなら、それほど時間のかかかるものではありません、しかし実際に書く時に困る理由の一つが、組み込み関数が思うように使えないことです。制御文や演算子と言ったものは、数も多くなく、英単語の略と記号を数十個覚えれば、ほぼ網羅できてしまいます ※もちろん、
第19回.いろいろな繰り返し処理
プログラミングにおいて、最も重要で最も多く使われるのが、条件分岐と繰り返し処理です、「条件により処理を変えながら繰り返し処理を行う」、これこそがプログラムによる自動化です。今回は、この繰り返し処理の記述について、ここまで説明してこなかった書き方も加えて、繰り返し処理の前提について説明します。
第20回.エラー処理(try・・・catch)
> GoogleAppsScriptでは、他の言語(VBA等)で、どうしても発生する事の多い、データ型のエラーが発生しません、従って、スプレッドシートを扱っている範囲内では、ほとんどエラーは出ないのですが、とはいえ、全くエラーが出ないという事でもありません。GoogleAppsScriptでは、文字列に四則演算をしても、
第21回.配列って何なんだ?
プログラミングを学ぶ上で、乗り越えなければならない壁がいくつかありますが、その一つが、配列になると思います、その全てを自在に使いこなすには相当の時間が必要ですが、まずは基礎から。配列は、配列変数とも言い、変数の一種になります。変数についの説明では、データを入れて必要なときに利用するために用意した入れ物で、
第22回.オブジェクト、メソッド、プロパティとは
JavaSciptの文法を数回にわたってやりましたが、最後として、オブジェクト、プロパティ、メソッド 基本の用語を確認しておきましょう。オブジェクト オブジェクトとは操作対象の事です。プログラムでは、「何かをどうする」と言った形で命令を書きます。

GASでスプレッドシートの機能を使う

第23回.行・列を操作する(挿入・削除・非表示・サイズ)
シートの行や列全体に対する操作になります、挿入、削除、表示非表示、行高、列幅、これらは、sheetオブジェクトのメソッドを使います。以下では、sheetオブジェクトのメソッドのうち、行・列に関するメソッドを抜粋しています。基本として見方、使い方ですが、1行や1列のみ対象の場合は単数形(Row,Column) 複数行や複数列が対象の場合は複数形(Rows,
第24回.シートの挿入・削除・名前変更
シートの挿入、シートの削除、シートの名前変更です、シートの挿入・削除は、Spreadsheetオブジェクトのメソッド、名前の変更は、Sheetオブジェクトのメソッドになります。以下では、これだけ覚えておけば良いというメソッドに限定して抜粋しています。
第25回.スプレッドシート(ブック)の作成・名前変更
スプレッドシートの作成と名前変更です、スプレッドシートの作成は、SpreadsheetAppのcreateメソッド、名前の変更は、Spreadsheetオブジェクトのrenameメソッドになります。削除は、と思ってメソッドを探しましたが、見当たりませんでした。
第26回.セルのコピー&各種ペースト
GoogleAppsScriptで、スプレッドシートのセルをコピペする時の書き方になります、セルのコピペといっても、セル全体、値のみ、書式のみと、いろいろな貼り付け方法があります。記述方法は複数ありますが、基本の使い方だけ覚えれば十分です。
第27回.セルに数式を入れる
GoogleAppsScriptで、スプレッドシートのセルに、計算結果ではなく、計算式そのものを入れる場合のほうほうについての解説です。スクリプトで処理する場合は計算結果を入れる事が多いのですが、時に計算式を入れた方が後の使い勝手が良い場合もあります。
第28回.リンクの挿入・編集・削除
GoogleAppsScriptで、スプレッドシートのセルにハイパーリンクを挿入する場合です、しかし、そもそもスプレッドシートでは、Excelのハイパーリンクとは違い、HYPERLINK関数しかありません。そこで、スクリプトでハイパーリンク関数を挿入する方法についてという事になります。
第29回.メモの挿入・削除と改行文字
GoogleAppsScriptで、スプレッドシートのセルにメモを挿入・削除するスクリプトの書き方です、メモを改行する時の改行コードについても解説します。メモは、まさしくメモとして各種注意事項や、変更履歴等として使う事の出来る機能です。ただし、「コメントの挿入」とは違います。
第30回.並べ替え
GoogleAppsScriptで、スプレッドシートを並べ替えます、書き方のバリエーションがいろいろありますが、並べ替えキー列、昇順・降順、これらをどのように指定するかだけの違いになります。書き方のバリエーションごとに順に見ていきましょう。
第31回.入力規則
GoogleAppsScriptで、スプレッドシートに入力規則を設定します、入力規則は機能がとても多く、それにメ対応したソッドも多数あります。ここでは、メソッドの一覧と、代表的な使い方を参考スクリプトを掲載します。入力規則の作成方法の概要 クラスSpreadsheetAppのメソッドnewDataValidationで入力規則のビルダDataValida…
第32回.グラフ
GoogleAppsScriptで、スプレッドシートにグラフを挿入します。スクリプトであまり凝ったレイアウトのグラフを作成しようとすると、結構大変になりますので、そのような場合は、手動で作成したグラフをスクリプトで変更する等の工夫も必要です。
第33回.表示の固定
GoogleAppsScriptで、シートの表示(スクロール)の固定を設定します。表とは一般に、横に項目、縦にデータが連続して入っているものです、スクロールした場合に、見出しが見えなくなってしまう事のないように設定しておきます。表示(スクロール)の固定に関するメソッド Sheetのメソッドを使います。
第34回.シート保護
GoogleAppsScriptで、スプレッドシートを保護します、スプレッドシートの保護に関しては、少々面倒なスクリプトだと感じます。ここでは理屈抜きでサンプルコードの提示に徹します。保護する場合の実際のスクリプトのサンプルを見ていきましよう。

GASの使えるテクニックを増やす

第35回.スプレッドシートが非常に遅い、高速化するには
GoogleAppsScriptで、スプレッドシートのセルを扱うと、とても処理時間がかかります、あまりにも遅く、目で動作がゆっくり見えるレベルです、データ量が多くなっても、実用に耐える速度で処理する方法を解説します。スプレッドシートに比べればExcelはかなり速いですが、VBAの書き方によっては処理時間がかかってしまう場合もあります。
第36回.フォルダとファイルを扱う(DriveApp)
GoogleAppsScriptで、Googleドライブのファイルやフォルダを扱う場合は、DriveAppクラスを使います。DriveAppクラスの各種メソッドの戻り値(FolderクラスやFileクラス)のメソッドを使って各種操作を行います。
第37回.フォルダの一覧取得・作成・削除(Folder)
GoogleAppsScriptで、フォルダ内のサブフォルダ一覧を取得したり、フォルダ内にサブフォルダを作ったり削除したりするスクリプトの書き方を解説します。使用するクラスは、DriveApp Folder File FolderIterator FileIterator これらのメソッドを使います。
第38回.ファイルの一覧取得・削除(File)
GoogleAppsScriptで、フォルダ内のファイル一覧を取得したり、フォルダ内にファイルを作ったり削除したりするスクリプトの書き方を解説します。使用するクラスは、DriveApp Folder File FolderIterator FileIterator これらのメソッドを使います。

GASの応用編

Excel流の最終行の取得
Excelでは、xlUpやxlDownで指定列の最終行を取得することが多いです。GoogleAppsScriptにもどうようのものは用意されています。かなり記述が複雑になっててますが、このGASの書き方を紹介します。
Excelでは、xlUpやxlDownで指定列の最終行を取得することが多いです、
しかし、これに該当するものは、Google Apps Scriptには存在しません、
そこで、自作したらどうなるか、という事で書いてみました。

Twitter Bot 作成
GoogleAppsScriptで、TwitterのBotを作成します、全て作成していたら大変ですし、今の段階では私にその技量はありませんので、ネットに公開されているものを参考に作成しました。従って、ここでは手順の紹介がメインで、コード等はリンク先を参照してください。
Google Apps Scriptで、TwitterのBotを作成します、
全て作成していたら大変ですし、今の段階では私にその技量はありませんので、
ネットに公開されているものを参考に作成しました。



新着記事NEW ・・・新着記事一覧を見る

VBA100本ノック 33本目:マクロ記録の改修|VBA練習問題(11月26日)
VBA100本ノック 32本目:Excel終了とテキストファイル出力|VBA練習問題(11月25日)
VBA100本ノック 31本目:入力規則|VBA練習問題(11月24日)
将棋とプログラミングについて~そこには型がある~|エクセル雑感(11月22日)
VBA100本ノック 30本目:名札作成(段組み)|VBA練習問題(11月22日)
VBA100本ノック 29本目:画像の挿入|VBA練習問題(11月21日)
VBA100本ノック 28本目:シートをブックに分割|VBA練習問題(11月19日)
VBA100本ノック 27本目:ハイパーリンクのURL|VBA練習問題(11月18日)
VBA100本ノック 26本目:ファイル一覧作成|VBA練習問題(11月17日)
VBA100本ノック 25本目:マトリック表をDB形式に変換|VBA練習問題(11月15日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.マクロって何?VBAって何?|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ