【初心者向け】Google Apps Script(GAS)のスタンドアロン型でGoogleの各種サービスにアクセスしてみよう!

GAS(Google Apps Script)は、Googleの豊富なサービスと連携してタスクを自動化する強力なツールです

本記事では、初めてGASを試す方、特にスタンドアロン型の使い方に興味を持っている方に向けて、スタンドアロン型とコンテナバインド型の違いを解説し、スタンドアロン型で実際に簡単なコードを紹介したいと思います!

この記事を読んで欲しい人
  • とにかくGASを触ってみたいという人
  • スタンドアロン型でGASを書いてみたい!という人
  • GASを使って、仕事を効率化したい!という人
  • 簡単なプログラムを書いてみたいという人

GASは、環境構築がいらず、基本言語がJavaScriptで構成されているため、初心者におすすめのプログラミング言語なのですが、「何から始めたらいいの?」とお悩みの方もいるかと思います

この記事の執筆者について
  • GASの人
  • ITベンダSEとして12年勤務する中で民間、金融、官公庁の現場を一通り経験済
  • 現在は公務員をやりながら起業に向けて着々と準備中
GASなら任せろ!
こーすけ先生

本記事では実際に仕事でGASを扱っている私が、このような悩みを抱えている方に向けて、GASについて解説していきたいと思います!

今回はいよいよ、GASを使って簡単なコードを書いていこうと思います!

こーすけ先生

「そもそもGASって何?」という方はまずは上の記事を読んでみてください!

目次

スタンドアロン型とコンテナバインド型の違い

GASにはスタンドアロン型コンテナバインド型があります

こーすけ先生

簡単に言えばGASが単独で存在するのか、Googleサービスに紐づいて存在するのかといった違いです

スタンドアロン型は独立したアプリケーションのために使用し、コンテナバインド型は特定のGoogle Apps内のカスタマイズや拡張機能のために使用します

スタンドアロン型
コンテナバインド型
  • 独立したGASプロジェクトで、特定のGoogle Apps(スプレッドシート、ドキュメント、フォームなど)に紐付かない
  • 独自のトリガーを設定し、ウェブアプリケーションとして公開することができる
  • プロジェクトごとに独自のスクリプトファイルが含まれ、再利用が容易
  • 特定のGoogle Apps内のスクリプトとして関連付けられ、そのアプリ内でのみ使用可能
  • アプリ内のデータやオブジェクトにアクセスでき、アプリのイベントと連携可能
  • スクリプトファイルはアプリケーションと結びつき、複数のコンテナ内で再利用できる

使用ケースに応じて適切なプロジェクトタイプを選ぶようにしましょう!

コンテナバインド型の場合、対象のGoogleサービス(例えばスプレッドシート)を共有した場合、それに紐づくGASも相手が閲覧することができてしまいます
そのため、GASを完全に隠したいのであれば、スタンドアロン型を採用すべきです

【今回のメイン】スタンドアロン型

こーすけ先生

単純にアクセスするだけならばコンテナバインド型の方が簡単だけど、あえてスタンドアロン型でやってみよう!

がすぴょん

難しそう…

こーすけ先生

今後、GASを勉強していく上で複数サービスを同一のGASから操作する場合は、自ずとスタンドアロン型の記述が必要となってくるからこの機会にチャレンジしてみよう!

事前準備

今回は、GoogleスプレッドシートGoogleドキュメントGoogleスライドGoogleフォームそれぞれにアクセスしますので、以下のような状態を作ってください!

新規に各種サービスを作成する場合、サービスを開いたあとに適当な入力を一度でもすれば、ヘッダー部の表示が変わり、Googleドライブへの保存が完了します

こーすけ先生

自動保存は本当に便利です!

スタンドアロン型でアクセスする場合は、各種サービスとGASが紐づいていないため、予め各種サービスを作成しておく必要があります
※すでにアクセスしたいファイルが決まっている場合は新規に作成する必要はありません

各ファイルのIDを取得する

GoogleスプレッドシートGoogleドキュメントGoogleスライドGoogleフォームにはそれぞれに一意なID(文字、数字、ハイフン、アンダースコアから成る一意の値)が割り振られています。この一意のIDはファイルのURLから確認できますので、それを取得(コピー) しておいてください。

※この例でいうと、四角で囲った1xjdjN2uJefWlyN87SScPsnahWJ_NEVEuHiDxxBElPdUがIDとなります

GASエディタを開く

STEP
Googleドライブにアクセスし、左上の [+ 新規] ボタンをクリックします。
STEP
[その他] の中にある [Google Apps Script] を選択します。
STEP
エディタが開きます
画像に alt 属性が指定されていません。ファイル名: dutsnd5-1-1024x378.png
がすぴょん

エディタを開くのは思いのほか簡単なんだね!
わっ…なんか「▷実行」を押したら承認?を求められちゃった…

こーすけ先生

プロジェクトを開始する時、必ず出てくる画面だね
「権限を確認」をクリックしよう!

がすぴょん

自分のアカウントを選択したら「このアプリはGoogleで確認されていません」って出てきちゃったよ?

こーすけ先生

「詳細」をクリックして、「無題のプロジェクト(安全ではないページ)に移動」をクリックしてみて!

がすぴょん

「許可」をクリックしました!

こーすけ先生

これでGASを書く準備が整ったよ!
早速、試しに色々書いていこう!

GASは[実行]ボタンをクリックした際に、各クラスに対するアクセス権限がまだ承認されていない場合、それを促すダイアログが表示されます
これは、GASも自身のアカウントで作成しているとはいえ、GASから見ると別のGoogleサービスを扱うことになるため、本当によいかどうかを確認するものとなります

Googleスプレッドシートを編集する

function gaslog_SpreadSheet() {
  // スプレッドシートクラスを用いて、IDを指定してファイルにアクセスする
  let wSpread = SpreadsheetApp.openById('自分のスプレッドシートのIDを貼り付け');
  // 対象スプレッドシートの1番目のシートにアクセスする
  let wSheet = wSpread.getSheets()[0];
  // "シート1"にアクセスする場合など名称確定の場合は、以下でもOK
  // let wSheet = wSpread.getSheetByName('シート1');
 // 試しにC2セル(2行3列目)にがすぴょんと入力する
  wSheet.getRange(2, 3).setValue('がすぴょん');
}
がすぴょん

「実行」をクリック!

がすぴょん

わっ…すごい!
C2セルに僕の名前が入力されたよ!

小ネタ「セル」を選択する方法

Google スプレッドシートのクラス一覧

Googleドキュメントを編集する

function gaslog2_Document() {
  // ドキュメントクラスを用いて、IDを指定してファイルにアクセスする
  let wDocument = DocumentApp.openById('自分のGoogleドキュメントのIDを貼り付け');
  // 試しに、対象ドキュメントに段落を追加して「がすぴょん」と入力する
  wDocument.getBody().appendParagraph('がすぴょん');
}
こーすけ先生

上記のプログラムを実行すると、対象ドキュメントに「がすぴょん」と出力されます。

Googleドキュメントのクラス一覧


Googleスライドを編集する

function gaslog3_Slide() {
  // スライドクラスを用いて、IDを指定してファイルにアクセスする
  let wSlides = SlidesApp.openById('自分のGoogleスライドのIDを貼り付け');
  // スライドの1ページ目を取得する
  let wSlide = wSlides.getSlides()[0];
  // 試しに1ページ目に設定されているテキストボックスや図形オブジェクトの数を取得する
  console.log(wSlide.getShapes().length);
  // 1ページ目の1つ目のオブジェクトに「がすぴょん」と設定する
  wSlide.getShapes()[0].getText().setText('がすぴょん');
}
がすぴょん

タイトルが僕の名前に書き換わった!

Googleドキュメントのクラス一覧

Googleフォームを編集する

function gaslog4_Form() {
  // フォームクラスを用いて、IDを指定してファイルにアクセスする
  let wForm = FormApp.openById('自分のGoogleフォームのIDを貼り付け');
  // フォームに'がすぴょんについてどう思うか'の質問文を追加する
  wForm.addParagraphTextItem().setTitle('がすぴょんについてどう思いますか')
                              .setRequired(true)
                              .setHelpText('できるだけ詳しく記載して下さい');
}
こーすけ先生

上記のプログラムを実行すると、対象フォームに質問「がすぴょんについてどう思いますか」がテキスト形式の必須回答項目として追加されます。

Googleドキュメントのクラス一覧

コンテナバインド型

こーすけ先生

コンテナバインド型にも簡単に触れたいと思います!

こーすけ先生

「拡張機能」から「App Script」を選択するとエディタに遷移します!

function containerBind(){
  //紐づくスプレッドシートを取得する
  let ss = SpreadsheetApp.getActive();
  //step1というシート名のシートを取得する
  let sheetStep = ss.getSheetByName("step1");
  //step1のB1セルを取得する
  let rangeB1 = sheetStep.getRange(1,2);
  //B1セルの値を取得する
  let strB1 = rangeB1.getValue();
  console.log(strB1);
}
がすぴょん

「▷実行」してみると、B1セルの情報を読み取ることができたね!

コードを1行で書くのは望ましくない

function containerBind(){
   var ss = SpreadsheetApp.getActive().getSheetByName("step1").getRange(1,2).getValue();
   console.log(ss);
}
がすぴょん

こんなカンジでコードを一行で書くのはダメなの?

こーすけ先生

同じコードを何度も記述しなくてはいけないし、メソッドを多用すると使用制限がかかりやすくなってしまうんだ!同じ記述が続く場合は、変数を定義してあげて使いまわすことが大事だね!

GASは一回の処理に対して6分間までという実行制限があるため、長時間かかる処理はできません

まとめ

今回の記事では、GoogleスプレッドシートGoogleドキュメントGoogleスライドGoogleフォームについて、簡単な操作方法を紹介しました!

次回以降では各クラス(特によく使われるGoogleスプレッドシートGoogleフォームを重点的)の詳細な活用方法をどんどん記載していきますが、少しでも予習しておきたい方は以下から各クラスのリファレンスを学んでみてください!

Google スプレッドシートのクラス一覧

Googleドキュメントのクラス一覧

Googleスライドのクラス一覧

Googleフォームのクラス一覧

こーすけ先生

おかげさまで今年5月に起業しました!
GASやGoogleサービス、プログラミング全般のご相談承ります!

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

GASの人。ITベンダSEとして12年勤務し、民間、金融、官公庁の現場を一通り経験済。html、css、JavaScript、Java、PHPも分かります。最近は専らGASで小規模アプリケーションを頻繁に作成しています。GASのことなら何でもお任せあれ!現在は公務員として働きながら、起業に向けて着々と準備中です!

コメント

コメントする

CAPTCHA


目次