Tworzenie dodatku do Google Workspace za pomocą Node.js

Tworzenie dodatków do Google Workspace w Cloud Functions przy użyciu środowiska wykonawczego Node.js.

Cele

  • skonfigurować środowisko,
  • Utwórz i wdróż funkcję w Cloud Functions.
  • Utwórz i wdróż dodatek.
  • Zainstaluj dodatek.

Wymagania wstępne

Konfigurowanie środowiska

Otwórz projekt w Google Cloud Console.

  1. W konsoli Google Cloud otwórz stronę Wybierz projekt.

    Wybierz projekt w chmurze

  2. Wybierz projekt Google Cloud, którego chcesz użyć. Możesz też kliknąć Utwórz projekt i postępować zgodnie z instrukcjami wyświetlanymi na ekranie. Jeśli utworzysz projekt Google Cloud, może być konieczne włączenie płatności za ten projekt.

Konfigurowanie ekranu zgody OAuth

Dodatki do Google Workspace wymagają konfiguracji ekranu zgody. Skonfigurowanie ekranu zgody OAuth dodatku określa, co Google wyświetla użytkownikom.

  1. W konsoli Google Cloud otwórz Menu  > Google Auth platform > Branding.

    Otwórz Promowanie marki

  2. Jeśli masz już skonfigurowany Google Auth platform, możesz skonfigurować te ustawienia ekranu zgody OAuth w sekcjach Branding, OdbiorcyDostęp do danych. Jeśli zobaczysz komunikat Google Auth platform Jeszcze nie skonfigurowano, kliknij Rozpocznij:
    1. W sekcji Informacje o aplikacji w polu Nazwa aplikacji wpisz nazwę aplikacji.
    2. W sekcji Adres e-mail pomocy dla użytkowników wybierz adres e-mail, na który użytkownicy mogą pisać, jeśli mają pytania dotyczące ich zgody.
    3. Kliknij Dalej.
    4. W sekcji Odbiorcy wybierz Wewnętrzny.
    5. Kliknij Dalej.
    6. W sekcji Dane kontaktowe wpisz adres e-mail, na który będziesz otrzymywać powiadomienia o wszelkich zmianach w projekcie.
    7. Kliknij Dalej.
    8. W sekcji Zakończ zapoznaj się z zasadami dotyczącymi danych użytkownika w usługach interfejsów API Google i jeśli się z nimi zgadzasz, kliknij Akceptuję zasady dotyczące danych użytkownika w usługach interfejsów API Google.
    9. Kliknij Dalej.
    10. Kliknij Utwórz.
  3. Na razie możesz pominąć dodawanie zakresów. W przyszłości, gdy będziesz tworzyć aplikację do użytku poza organizacją Google Workspace, musisz zmienić Typ użytkownika na Zewnętrzny. Następnie dodaj zakresy autoryzacji wymagane przez aplikację. Więcej informacji znajdziesz w pełnym przewodniku Konfigurowanie zgody OAuth.

Tworzenie i wdrażanie funkcji w Cloud Functions

  1. W konsoli Google Cloud kliknij Aktywuj Cloud Shell Przycisk Aktywuj Cloud Shell.

    Aktywuj Cloud Shell

    Terminal Cloud Shell otworzy się i uruchomi sesję w dolnym panelu konsoli Google Cloud.

  2. Aby skonfigurować Cloud Shell i połączyć się z nim, kliknij Autoryzuj.

  3. W terminalu Cloud Shell włącz Cloud Functions API, Cloud Build API, Google Workspace Add-ons API i Compute Engine API:

    gcloud services enable cloudfunctions.googleapis.com  \
                        cloudbuild.googleapis.com  \
                        gsuiteaddons.googleapis.com  \
                        compute.googleapis.com
    
  4. Uruchom edytor Cloud Shell, klikając Przycisk Edytor kodu Otwórz edytor na pasku narzędzi w oknie Cloud Shell.

    Ten wbudowany edytor kodu umożliwia wygodne przeglądanie i edytowanie plików w tym samym środowisku, w którym tworzone i wdrażane są projekty.

  5. W pustym katalogu utwórz plik function.js z tym przykładowym kodem:

    /**
     * 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"
                         }
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      };
    }
    
  6. W tym samym katalogu utwórz plik package.json z tym przykładowym kodem:

    {
      "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
      }
    }
    
  7. Aby wrócić do terminala Cloud Shell, kliknij Aktywuj przycisk Cloud Shell Otwórz terminal.

  8. Dodaj rolę Cloud Build Service Account (roles/cloudbuild.builds.builder) do domyślnego konta usługi Compute Engine.

    Najpierw skonfiguruj uprawnienia konta usługi:

    export PROJECT_ID=$(gcloud config get project)
    export SERVICE_ACCOUNT_NAME=$(gcloud compute project-info describe \
      --format="value(defaultServiceAccount)")
    

    Następnie przyznaj brakujące uprawnienia konta usługi:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
      --role="roles/cloudbuild.builds.builder"
    
  9. Aby wdrożyć funkcję, uruchom to polecenie:

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

    Jeśli pojawi się zapytanie, określ, że nie zezwalasz na nieuwierzytelnione wywołania funkcji. Wdrożenie funkcji może potrwać kilka minut.

Tworzenie wdrożenia dodatku

  1. Znajdź adres e-mail konta usługi dla dodatku:

    gcloud workspace-add-ons get-authorization
    
  2. Przypisz do konta usługi rolę cloudfunctions.invoker. Zastąp SERVICE_ACCOUNT_EMAIL polem serviceAccountEmail z poprzedniego kroku.

    gcloud functions add-iam-policy-binding loadHomePage \
       --role roles/cloudfunctions.invoker \
       --member serviceAccount:SERVICE_ACCOUNT_EMAIL
    
  3. Pobierz adres URL wdrożonej funkcji. Aby uzyskać adres URL, uruchom to polecenie i w sekcji httpsTrigger poszukaj pola url:

    gcloud functions describe loadHomePage
    
  4. Aby wrócić do edytora Cloud Shell, kliknij Przycisk Edytor kodu Otwórz edytor.

  5. W tym samym katalogu co plik package.json utwórz plik deployment.json z tym przykładowym kodem. Zastąp URL wartością url wdrożonej funkcji z poprzedniego kroku.

    {
      "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": {},
        "httpOptions": {
          "granularOauthPermissionSupport": "OPT_IN"
        }
      }
    }
    
  6. Aby utworzyć wdrożenie, wróć do terminala Cloud Shell:

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

Jak zainstalować dodatek

  1. Zainstaluj wdrożenie w trybie deweloperskim:

    gcloud workspace-add-ons deployments install quickstart
    
  2. Otwórz lub ponownie załaduj Gmaila, aby wyświetlić dodatek. Na pasku narzędzi po prawej stronie poszukaj ikony z kolbą.

  3. Kliknij ikonę, aby otworzyć dodatek. Jeśli pojawi się prośba o autoryzację, autoryzuj dodatek.

Opcjonalnie: czyszczenie

Aby uniknąć obciążenia konta opłatami, usuń utworzone zasoby:

  1. Odinstaluj dodatek z konta Google:

    gcloud workspace-add-ons deployments uninstall quickstart
    
  2. Aby uniknąć obciążenia konta opłatami za zasoby użyte w tym krótkim wprowadzeniu, usuń projekt w Cloud:

    gcloud projects delete PROJECT_ID
    

    Zastąp PROJECT_ID identyfikatorem projektu w Google Cloud, którego używasz w tym krótkim wprowadzeniu. Identyfikator projektu w Google Cloud znajdziesz w konsoli Google Cloud na stronie Panel.

Aby dodać więcej funkcji do dodatku Google Workspace, wykonaj te czynności: