5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

個人開発エンジニア応援 - 個人開発の成果や知見を共有しよう!-

【0からGASを学ぶ】GASからGoogleの各種サービスにアクセスしてみよう

Last updated at Posted at 2023-10-17

はじめに

本シリーズでは、GASの始め方や便利な使い方、ビジネス活用まで幅広く解説します。シリーズをひと通り読んでいただければ、あなたもきっとGASマスターになれるはずです。

シリーズの対象者

  • そもそもGASってなんだかわからない
  • GASを学びたいけど何から始めればいいかわからない方
  • GASはわかり始めたけど、もっと活用ができないかと模索している方
  • とにかくGoogleが好き! という方

前回記事

GASからサービスを操作する

では早速始めていきましょう。【0からGASを学ぶ】シリーズの第2回は「GASからGoogleの各種サービスにアクセスしてみよう」です。

GASからアクセス

前回はGASエディタを開くまでやりました。今回はそのエディタ上にプログラムを記述して、Googleの各種サービスを操作してみましょう。とは言ってもちょっと操作するくらいです、複雑なことはまた次回以降に!
なお、単純にアクセスするだけならばコンテナバインド型の方が簡単ですが、あえてスタンドアロン型でやってみましょう。複数サービスを同一のGASから操作する場合は、自ずとスタンドアロン型の記述が必要となります。

スタンドアロン型とコンテナバインド型の違いはこちらから

事前準備

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

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

 ↓

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

各ファイルのIDを取得

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

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

GASエディタを開く

繰り返しになりますが、今回はスタンドアロン型で開きますので、こちらを参考にGASエディタを起動してください。では、どんどんいきますよ、ついてきてください。

Googleスプレッドシート編

SpreadSheet.gs
function Qiita002_SpreadSheet() {
  // スプレッドシートクラスを用いて、IDを指定してファイルにアクセスする
  let wSpread = SpreadsheetApp.openById('1xjdjN2uJefWlyN87SScPsnahWJ_NEVEuHiDxxBElPdU');
  // 対象スプレッドシートの1番目のシートにアクセスする
  let wSheet = wSpread.getSheets()[0];
  // "シート1"にアクセスする場合など名称確定の場合は、以下でもOK
  // let wSheet = wSpread.getSheetByName('シート1');

  // 試しにC2セル(2行3列目)にQiitaと入力する
  wSheet.getRange(2, 3).setValue('Qiita');
}

上記のプログラムを実行すると、対象のスプレッドシートのC2セルにQiitaと出力されます。

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



Googleドキュメント編

Document.gs
function Qiita002_Document() {
  // ドキュメントクラスを用いて、IDを指定してファイルにアクセスする
  let wDocument = DocumentApp.openById('1cb8sBXasR2WFmx_o5FvCNJJ48fP8Gm-tU7gk7-RUGnE');
  // 試しに、対象ドキュメントに段落を追加してQiitaと入力する
  wDocument.getBody().appendParagraph('Qiita');
}

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

Googleスライド編

Slide.gs
function Qiita002_Slide() {
  // スライドクラスを用いて、IDを指定してファイルにアクセスする
  let wSlides = SlidesApp.openById('1y0GdnbOrb6emJTm1bT-uCT-mqUyQobNu_HC189MH-LQ');
  // スライドの1ページ目を取得する
  let wSlide = wSlides.getSlides()[0];
  // 試しに1ページ目に設定されているテキストボックスや図形オブジェクトの数を取得する
  console.log(wSlide.getShapes().length);
  // 1ページ目の1つ目のオブジェクトにQiitaと設定する
  wSlide.getShapes()[0].getText().setText('Qiita');
}

上記のプログラムを実行すると、対象スライドの1スライド目のタイトルにQiitaと出力されます。

Googleフォーム編

Form.gs
function Qiita002_Form() {
  // フォームクラスを用いて、IDを指定してファイルにアクセスする
  let wForm = FormApp.openById('15cpfIgLpqWnE2tK7gNlCAarNPFYnePNOXFPfsWlhKLU');
  // フォームに'Qiitaについてどう思うか'の質問文を追加する
  wForm.addParagraphTextItem().setTitle('Qiitaについてどう思いますか')
                              .setRequired(true)
                              .setHelpText('できるだけ詳しく記載して下さい');
}

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

これらをコンテナバインド型で記述すると?

以下は各種サービスからGASエディタを開いたと仮定した場合の記述になります。そのため、例えばQiita002_BindingSpreadSheetメソッドを、Googleドキュメントから開いたGASで実行しても実行エラーが発生します。

Binding.gs
function Qiita002_BindingSpreadSheet() {
  // バインディングしているスプレッドシートを取得する
  let wSpread = SpreadsheetApp.getActiveSpreadsheet();
  // 対象スプレッドシートの1番目のシートにアクセスする
  let wSheet = wSpread.getSheets()[0];
  // "シート1"にアクセスする場合など名称確定の場合は、以下でもOK
  // let wSheet = wSpread.getSheetByName('シート1');

  // 試しにC2セル(2行3列目)にQiitaと入力する
  wSheet.getRange(2, 3).setValue('Qiita');
}

function Qiita002_BindingDocument() {
  // バインディングしているドキュメントを取得する
  let wDocument = DocumentApp.getActiveDocument();
  // 試しに、対象ドキュメントに段落を追加してQiitaと入力する
  wDocument.getBody().appendParagraph('Qiita');
}

function Qiita002_BindingSlide() {
  // バインディングしているスライドを取得する
  let wSlides = SlidesApp.getActivePresentation();
  // スライドの1ページ目を取得する
  let wSlide = wSlides.getSlides()[0];
  // 試しに1ページ目に設定されているテキストボックスや図形オブジェクトの数を取得する
  console.log(wSlide.getShapes().length);
  // 1ページ目の1つ目のオブジェクトにQiitaと設定する
  wSlide.getShapes()[0].getText().setText('Qiita');
}


function Qiita002_BindingForm() {
  // バインディングしているフォームを取得する
  let wForm = FormApp.getActiveForm();
  // フォームに'Qiitaについてどう思うか'の質問文を追加する
  wForm.addParagraphTextItem().setTitle('Qiitaについてどう思いますか')
                              .setRequired(true)
                              .setHelpText('できるだけ詳しく記載して下さい');
}

各クラスのリファレンス

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

SpreadsheetApp

DocumentApp

SlidesApp

FormApp

安心してください。こーゆーリファレンスが苦手な人でも本シリーズを読み続けていただければ、必ずGASマスターに近づけます

コンテナバインドの存在しないサービス

GASでプログラムを書いていると頻繁に使用するものの、コンテナバインド型が存在しないサービスもいくつかあります。代表的なものでいうとGoogleカレンダーGoogleドライブGmailの3つです。これらの簡単な使い方は次回にしましょう。

おわりに

お疲れ様でした。
第2回は「GASからGoogleの各種サービスにアクセスしてみよう」ということで、少しだけですがGASに触れることができたのではないでしょうか。まだまだ序盤なので、長い道のりに感じるかもしれません。しかしながらすべてはここからです。まずはGASで各種サービスにアクセスをする、そしてデータを取得したり、編集したり、データに応じて別サービスを動かしたりなど、やりたいことを想像しながら学んでいきましょう。
記事を読んで、「良いな」や「今後に期待できる!」と感じて頂けたらいいねフォローコメントいただけると幸いです。それではまた次回をお楽しみに!

ブログでより詳しく解説しています!

以下画像をクリックしてブログにアクセス!!

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?