40
9

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.

【営業さんも学べる】一方通行「スプレッドシートにアドオンを追加する程度の能力だァ……?」【GAS】

Last updated at Posted at 2023-12-02

0. 自己紹介 イントロダクション

Google Sheetsスプレッドシート にデータ分析を行う数式アルゴリズム拡張機能アドオンを組み込む、だァ……?
おもしれープロジェクトだなァ
ふーン、 GASガス って技術で実装してンのか スゲェスゲェ

そーいやァ、自己紹介がまだだったな
一方通行アクセラレータ
学園都市にいる7人の超能力者レベル5の第1位だ
今回はアドベントカレンダーの3日目をつとめることとなった

Novel AI で生成した一方通行
図0 一方通行アクセラレータを知らない人に向けた
Novel AI で生成した一方通行アクセラレータのイメージ

今回は特別に、 GASガス を使って各種サービスと連携する方法を教えてやンよォ
コーディング経験の無い営業さンにも分かるように、なるべく丁寧に解説するつもりだから感謝しろォ

まずは GASガス について知らなきゃいけねェから説明してくぞ
覚悟は……出来てンだろうなァ

免責事項ゆるして
  • 一方通行アクセラレータと本記事の関係について
    • 「とある」シリーズ作品のキャラクターである一方通行アクセラレータと弊社とは一切関係ございません
    • 一方通行アクセラレータおよび「とある」シリーズ作品のイメージを傷つけるつもりは一切ございません
    • 本記事は一方通行アクセラレータの視点で説明していますが、一方通行アクセラレータが作品内で GASガス について調べることはありません
    • 本記事における一方通行アクセラレータの発言は創作であり、公式の見解や声明とは無関係です
  • 記事の内容とスタイルについて
    • 一方通行アクセラレータの視点で説明することは、読者が楽しく読むための工夫であり、筆者の趣味でもあります
    • この記事は筆者の個人的な興味に基づいており、エンターテインメントとして楽しんでいただけると幸いです
    • 一方通行アクセラレータの口調で話すために、失礼ともとれる発言を繰り返すことがありますが、誰かを傷つけるつもりのものではございません
  • キャラクター解釈と情報の正確性に関する注意
    • 作品における特定の期間に限定せずに、また複数の作品からセリフを参照しているため、キャラクターがブレています
    • キャラクターの解釈には筆者独自の視点が含まれていることをご注意ください
    • 本記事は情報の正確性を確保するために多数の記事を参考にしていますが、情報に誤りがある可能性があるため、正確な情報を得るためには他の情報も参照することを推奨します

1. G.A.S. Google Apps Script

サービスについて知りてェなら、公式のドキュメントを確認するのが鉄板だなァ
公式ページには以下の紹介があンぞ:

Apps Script は、Google Workspace の統合、自動化、拡張のためのビジネス ソリューションをすばやく簡単に構築するための唯一のローコード プラットフォームです。
Apps Script を使えば、ビジネス ユーザーは本格的なソフトウェア開発の経験がなくても、Google Workspace 上にカスタム ソリューションを構築できます。
Apps Script は、Gmail アカウントをお持ちであればどなたでもご利用いただけます。

要は、Google のサービスを自動化・拡張するために使用する、プログラミング環境およびスクリプト言語ってなワケだ
これにより、俺らはカスタム API の作成、データベースのような機能の実装、ウェブアプリケーションの開発などを行うことができる

この "Apps Script" の前に "Google" をつけることで Google が提供するスクリプト環境であることを明示して「Google Apps Script」と呼ぶ
ただ、これだと口頭で呼ぶには長ェから、その略称として GASガス と言うことが多いがなァ

他にも、他の言語と比べて以下のメリットがあり、未経験者だけでなくプログラミング初学者にもオススメできるぜ:

  • プロジェクトの作成が容易で、とっつきやすい
  • 直感敵な開発環境で実行しやすく、運用しやすい
  • 身近なサービスに反映できるため、成果がわかりやすい

また、言語のベースが JavaScript になっているのも、学習しやすくてイイよなァ

初学者に向けた詳しい説明は、以下の先行記事を参照しな:

GASガス についての説明はこれくらいにして、お楽しみの実装に移っていこうじゃねェか

2. 環境構築 セットアップ

実装してェなら以下の GASガス ページにアクセスしてプロジェクトを作成すりゃいい:

ただ、この章では簡単に動作を確認するために、 Google Sheetsスプレッドシート に紐付けた状態でプロジェクトを作成する方法を採る
以下にアクセスし、いつも通り空白のスプレッドシートを開いておけ:

次に、以下のように拡張機能欄から Apps Script をクリックしろ:

Google Sheets から GAS へのアクセス方法
図1 Google Sheetsスプレッドシート から GASガス へのアクセス方法

別タブで GASガス が開かれるはずだ
GASガス にアクセスすると、デフォでエディタがある
加えて、以下のように無題のプロジェクトに コード.gs があるはずだ:

GAS アクセス直後の画面
図2 GASガス アクセス直後の画面

その部分を以下に書き換えてやれ:

コード.gs
function myFunction() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; // アクティブなスプレッドシートの最初のシートを取得
  sheet.getRange('A1').setValue('Hello World!');                      // A1セルにテキストをセット
}
GAS プログラム記載後
図3 GASガス プログラム記載後

そンで実行ボタンを押すと、実行ログが開く
初めての実行の場合には、未だ実行はされず、以下のように権限を求められるはずだ:

GAS 権限確認モーダル
図4 GASガス 権限確認モーダル

これは必要な権限が変わるごとに求められる
世話のやける野郎だが、毎回確認してやるンだな
承認すると実行され、以下のようにログが更新されるはずだ:

GAS 実行後
図5 GASガス 実行後

実行ログで実行完了と表示されたら先程の Google Sheetsスプレッドシート を確認してやれ
以下のように A1 セルに Hello World! と表示されているはずだ:

Google Sheets 実行後
図6 Google Sheetsスプレッドシート 実行後

はじめてのプログラム実装と実行なンだとしたら、おめでてェ野郎だ
これでオマエも『エンジニア』の仲間入りだ

オマエをさらなる高みへ連れて行くために、次の章からは更に高度な機能について紹介する
以降の実装についても、いま作成したプロジェクトで実装して問題ねェから安心しろォ
だが、説明なしに専門用語を使用するから覚悟しなァ……

悪りィが、こっから先は玄人向けだ
後戻りは禁止ってなァ!大人しく腹ァ決めてさっさと次の章に進みやがれェ!!

3. 主な機能 フィーチャー

Google の各種サービスと連携する他にも、以下の主な機能もある:

  • 指定した時間や条件で実行するトリガー機能
  • 外部 API との連携機能
  • ウェブスクレイピング
  • 各種デプロイ
    • ウェブアプリ
    • 実行可能 API
    • アドオン
    • ライブラリ

上2つについて、それぞれ営業に向けた使用用途を考えた
また、下2つについては、それぞれ面白い使用例を見つけた
様々な使用方法を見ておくことで、自分なら GAS をどう使えるかが見えてくるはずだ
それに、プログラムの書き方などでも参考になるはずだ

3.1. トリガー

ニュージェネのウルトラマンのことじゃねェぞ
ちなみにブレーザーは最高に面白いぞ、カッコイイし

トリガーでは、指定した時間や条件でスクリプトを自動実行できる
以下では、メールを定期的に確認して、未読の「資料請求」メールに対して自動返信する:

emailAutoReply.gs
function replyToEmails() {
  var threads = GmailApp.search('subject:"資料請求" is:unread'); // 件名に「資料請求」を含む未読のメールを取得
  for (var i = 0; i < threads.length; i++) {                    // 各スレッド(メールスレッド)について処理
    var messages = threads[i].getMessages();                    // 全メッセージを取得
    for (var j = 0; j < messages.length; j++) {                 // 各メッセージについて処理
      var message = messages[j];                                // メッセージを取得
      var replyBody = 
          'お問い合わせいただきありがとうございます。\n\n' +
          '資料を添付いたしますので、ご確認ください。\n\n' +
          'ご不明な点がございましたら、お気軽にご連絡ください。';    // 自動返信のメール本文を作成
      var subject = 'Re: ' + message.getSubject();              // 件名に「Re:」を追加して返信の件名を作成
      message.reply(replyBody, {                                // 返信を送信する
        subject: subject,
        // attachments: [DriveApp.getFileById('FileID').getAs(MimeType.PDF)] // 添付ファイルを追加できる
      });
      message.markRead();                                       // メッセージを既読にする
    }
  }
}

トリガーを設定するには、以下の画像にあるように GASガス のサイドメニューからトリガー画面に移動して、「トリガーを追加」ボタンより当該のトリガーを設定する:

GAS サイドメニュー
図7 GASガス サイドメニュー

ここで設定する項目は以下だ:

変更対象 設定値
実行する関数 replyToEmails
イベントのソース 時間主導型
時間ベースのトリガーのタイプ 分ベースのタイマー
時間の間隔を洗濯(分) 1 分おき
GAS トリガー追加画面
図8 GASガス トリガー追加画面

試しに Gmail でメールを送信してみな

Gmail 送信画面
図9 Gmail 送信画面

メールを自動返信するはずだ

Gmail 受信画面
図10 Gmail 受信画面

用が済んだら、トリガーは消しておくンだな

3.2. 外部 API 連携

あとは、外部の API との連携も可能だから、色んなサービスとの連携も夢じゃねェ
Bot を介して Slack に投稿する方法を紹介すンぞ

Bot を作成するには、 Slack Workspace 内に App を作成して Incoming Webhooks を設定する必要がある
自分で作成するには以下を参考にするとイイぜェ:

コードは以下のようにしな:

slack.gs
function postMessageToSlack() {
  var webhookUrl = '';                            // SlackのWebhook URL
  var message = '';                               // 投稿したいメッセージ
  var options = {                                 // リクエスト内容
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify({'text': message}) // Slackのメッセージフォーマットに従ってpayloadをJSON形式で作成
  };
  UrlFetchApp.fetch(webhookUrl, options);         // Webhook URLにHTTPリクエストを送信してメッセージを投稿する
}

実行すると該当のチャンネルに Bot がメッセージを送信するはずだ

3.3. ウェブスクレイピング

立命館大学情報理工学部サイバーセキュリティ研究室の あらい大先生 がウェブスクレイピングを GAS で実装していたから見ておけ
SEIYU のウェブページからセール日を抽出してカレンダーに登録するみてェだ
最高にイカした使い方じゃねェか

3.4. 各種デプロイ

3.4.1. ウェブアプリ

神戸大学のプログラミング基礎演習のサイトを見つけた
どうやらこの講義では Chrome 拡張機能を作ったり GAS でウェブアプリや LINE Bot を作ったりするみてェだな

ウェブアプリでは スプレッドシート をデータベースのように扱って、 GAS でそれを含む HTML 文書を返すみてェだな
これもイカしてやがンぜ

3.4.2. 実行可能 API

主に見かけるデプロイ方式はウェブアプリかこの実行可能 API になるだろう
ユーザーが、ブラウザを通じて対話的に利用する場合は前者を、他のアプリなどから呼び出す場合はこの後者になるはずだ

GMOインターネットグループ株式会社のグループ研究開発本部では、 Google Form のデータ CSV を生成するところで GAS を使っているみてェだな

API がサービスと連携する場合は OAuth を使用することになるはずだから、その辺の理解も深めておく必要があるなァ……

3.4.3. アドオン

Google Workspace のアプリケーションに機能を追加するものになる
作業効率を向上するためのカスタムツールや機能の追加に使うことになるはずだ

アドオンでは他の方式とは異なり、先駆者や使用用途を明示した記事の割合が減っているように感じるなァ
もちろんアドオンでは、イントロで紹介したプロジェクトを紹介するぜ

このプロジェクトは Public リポジトリなので、オマエラも参加することができる
興味のあるヤツは参加してみるとイイんじゃねェか?

3.4.4. ライブラリ

再利用可能なコードを集めて、他のプロジェクトに共有するためのものだ
これらは実際によく使われるものが大いに参考になるだろう

4. 制限事項 リミテーション

しかし、天下の GASガス も『無敵』ってわけじゃねえ
以下のような制限もあるから、それには気をつけろ:

  • 実行時間や実行回数に制限がある
  • npm を介したモジュールを使用できない

大規模なモンを作る場合は、これらの制限を考慮に入れる必要があンぞ

前者などの数値的な制限については以下の公式ドキュメントを参照すると良い:

後者である npm モジュールを使用できない制限は、外部のライブラリを使用したいエンジニアには大きな問題だなァ
ただこれは、次の方法により解決することができる

4.1. clasp の使用

GAS で npm モジュールを使用するには、 GAS を CLI で操作する Google 公式 OSS ツールの clasp を使用する
これにより、 GAS のコードをローカルマシンで開発できるようになる
そうすると、開発効率も上がるし、各種モジュールを使用できるようになるってワケだ

実際に、最初に紹介したプロジェクトでもその方法が用いられている
複数人で GAS のコードを管理したい場合には現状では最適な方法となっているので、把握しておくンだな

5. まとめ ラストオーダー

じゃあ、最後に簡単にまとめてやる
GAS は、 Google のアプリケーションを自動化・拡張するための便利なツールだ
学習コストも低い方なので、是非使ってみるといい

ただ、こンなンじゃァオマエラは満足しねェよなァ……
そこで、もっと具体的な実用例を考えてみることにした
実際には使用するオマエラが考えることだが、よかったら次章のアイデアも参考にしな

6. 神ならぬ身にて天上の意思に辿り着くもの S Y S T E M

ここでは GAS のイカした使い方を考えていくが、 GAS は昔からあるもので、だいたいの案は出尽くしてる
ただ今は GPTs の Custom Actions が出たばかりで、これを活用することで更にイカしたモンがつくれるハズだ
そこで、 GAS と GPT をかけあわせたモンを考えてみンぞ
オマエラも考えてみると良い

ハッキリ言ってもう疲れ切ってる
こっから先は妄想の垂れ流しだ

6.1. GPTs と連携して Gmail をチャットボットが返信

GPTs に Knowledge で自社の情報を与え、 Custom Actions を使って会話できるようにして、 Gmail でメールが来たらチャットボットが応対するようにできるはずだ
具体的な返信対象のメールなどは考える必要があるが、アイデアとしてはイカしてるだろ?

調べたら、既に試しているヤツもいるらしいな
俺らも負けてらンねェな

6.2. スプレッドシートを参照した GPT Bot

GAS でスプレッドシートにある FAQ データにアクセス
GPT モデルでユーザーからの質問に回答する

6.3. GPT により Gmail 内容要約ツール

GAS で Gmail や Google ドライブ内の文書を読み込む
GPT を使用して内容を要約し、要約されたテキストをスプレッドシートに保管してレポートや分析に使用する

40
9
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
40
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?