Node.js を使用して Google Workspace アドオンを作成する

Node.js ランタイムを使用して、Cloud Functions で Google Workspace アドオンを作成します。

目標

  • 環境をセットアップする。
  • Cloud Functions の関数を作成してデプロイします。
  • アドオンを作成してデプロイします。
  • アドオンをインストールします。

前提条件

環境の設定

Google Cloud コンソールで Cloud プロジェクトを開きます。

  1. Google Cloud コンソールで [プロジェクトを選択] ページに移動します。

    Cloud プロジェクトを選択する

  2. 使用する Google Cloud プロジェクトを選択します。または、[プロジェクトを作成] をクリックし、画面の指示に沿って操作します。Google Cloud プロジェクトを作成する場合は、プロジェクトの課金を有効にする必要がある場合があります。

OAuth 同意画面を構成する

Google Workspace アドオンでは、同意画面の設定が必要です。アドオンの OAuth 同意画面を構成すると、ユーザーに表示される内容を定義できます。

  1. Google Cloud コンソールで、メニュー > [API とサービス] > [OAuth 同意画面] に移動します。

    OAuth 同意画面に移動

  2. [ユーザーの種類] で [内部] を選択し、[作成] をクリックします。
  3. アプリ登録フォームに入力し、[保存して続行] をクリックします。
  4. ここではスコープの追加をスキップして、[保存して次へ] をクリックします。今後、Google Workspace 組織の外部で使用するアプリを作成する場合は、[ユーザータイプ] を [外部] に変更し、アプリに必要な認可スコープを追加する必要があります。

  5. アプリ登録の概要を確認します。変更するには、[編集] をクリックします。アプリの登録に問題がなければ、[ダッシュボードに戻る] をクリックします。

Cloud 関数を作成してデプロイする

  1. ローカル ターミナルで、Cloud Functions、Cloud Build、Google Workspace アドオン API を有効にします。

    gcloud services enable cloudfunctions cloudbuild.googleapis.com gsuiteaddons.googleapis.com
    
  2. 空のディレクトリに、次のサンプルコードを使用して function.js ファイルを作成します。

    /**
     * Cloud Function that loads the homepage for a
     * Google Workspace Add-on.
     *
     * @param {Object} req Request sent from Google
     * @param {Object} res Response to send back
     */
    exports.loadHomePage = function addonsHomePage (req, res) {
      res.send(createAction());
    };
    
    /** Creates a card with two widgets. */
    function createAction() {
      return {
        "action": {
          "navigations": [
            {
              "pushCard": {
                "header": {
                  "title": "Cats!"
                },
                "sections": [
                  {
                    "widgets": [
                      {
                        "textParagraph": {
                          "text": "Your random cat:"
                        }
                      },
                      {
                        "image": {
                          "imageUrl": "https://cataas.com/cat"
                         }
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      };
    }
    
  3. 関数をデプロイします。

    gcloud functions deploy loadHomePage --runtime nodejs12 --trigger-http
    

    プロンプトが表示されたら、関数の未認証の呼び出しを許可しないことを指定します。関数のデプロイには数分かかることがあります。

アドオンのデプロイメントを作成する

  1. アドオンのサービス アカウントのメールアドレスを確認します。

    gcloud workspace-add-ons get-authorization
    
  2. サービス アカウントに cloudfunctions.invoker ロールを付与します。

    gcloud functions add-iam-policy-binding loadHomePage \
        --role roles/cloudfunctions.invoker \
        --member serviceAccount:SERVICE_ACCOUNT_EMAIL
    
  3. デプロイされた関数の URL を取得します。URL を取得するには、次のコマンドを実行して、httpsTrigger セクションの url フィールドを探します。

    gcloud functions describe loadHomePage
    
  4. 次のサンプルコードを使用して、deployment.json ファイルを作成します。URL は、前の手順でデプロイした関数の URL に置き換えます。

    {
      "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"],
      "addOns": {
        "common": {
          "name": "My HTTP Add-on",
          "logoUrl": "https://raw.githubusercontent.com/webdog/octicons-png/main/black/beaker.png",
          "homepageTrigger": {
            "runFunction": "URL"
          }
        },
        "gmail": {},
        "drive": {},
        "calendar": {},
        "docs": {},
        "sheets": {},
        "slides": {}
      }
    }
    
  5. デプロイを作成します。

    gcloud workspace-add-ons deployments create quickstart \
        --deployment-file=deployment.json
    

アドオンをインストールする

  1. デプロイメントを開発モードでインストールします。

    gcloud workspace-add-ons deployments install quickstart
    
  2. Gmail を開くか再読み込みして、アドオンを表示します。右側のツールバーで、ビーカー アイコンを探します。

  3. アイコンをクリックしてアドオンを開きます。メッセージが表示されたら、アドオンを承認します。

オプション: クリーンアップ

アカウントに課金されないようにするには、作成したリソースを削除します。

  1. Google アカウントからアドオンをアンインストールします。

    gcloud workspace-add-ons deployments uninstall quickstart
    
  2. このクイックスタートで使用したリソースに対して課金されないようにするには、Cloud プロジェクトを削除します。

    gcloud projects delete PROJECT_ID
    

    PROJECT_ID は、クイックスタートに使用した Cloud プロジェクトの ID に置き換えます。Cloud プロジェクト ID は、Google Cloud コンソールの [ダッシュボード] ページで確認できます。

次のステップ

Google Workspace アドオンに機能を追加するには、次のガイドをご覧ください。