Tworzenie dodatku do Google Workspace za pomocą Node.js

Tworzenie dodatków 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

Otwieranie projektu Cloud w konsoli Google Cloud

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

    Wybierz projekt Cloud

  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, konieczne może być włączenie płatności.

Konfigurowanie ekranu zgody OAuth

Dodatki Google Workspace wymagają skonfigurowania ekranu zgody. Konfigurując ekran zgody OAuth w przystawce, określasz, co Google wyświetla użytkownikom.

  1. W konsoli Google Cloud otwórz Menu  > > Identyfikacja marki.

    Otwórz Branding

  2. Jeśli masz już skonfigurowany projekt , możesz skonfigurować te ustawienia ekranu zgody OAuth: Markowanie, OdbiorcyDostęp do danych. Jeśli zobaczysz komunikat nie skonfigurowano, kliknij Rozpocznij:
    1. W sekcji Informacje o aplikacji w polu Nazwa aplikacji wpisz nazwę aplikacji.
    2. W sekcji Adres e-mail dla użytkowników potrzebujących pomocy wybierz adres e-mail zespołu pomocy, na który użytkownicy będą mogli się z Tobą kontaktować w sprawie pytań dotyczących 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ędą wysyłane powiadomienia o zmianach w projekcie.
    7. Kliknij Dalej.
    8. W sekcji Zakończ zapoznaj się z zasadami dotyczącymi danych użytkownika w usługach interfejsu API Google, a potem, jeśli się z nimi zgadzasz, kliknij Akceptuję zasady dotyczące danych użytkownika w usługach interfejsu API Google.
    9. Kliknij Dalej.
    10. Kliknij Utwórz.
  3. Na razie możesz pominąć dodawanie zakresów. Gdy w przyszłości 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 Twoją 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.

    Aktywowanie Cloud Shell

    Otworzy się terminal Cloud Shell, który 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 interfejsy 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 Edytor kodu
przycisk 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 Cloud Shell
przycisk Otwórz terminal.

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

    Najpierw skonfiguruj uprawnienie 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 kontu 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ę prośba, 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 znajdź pole url w sekcji httpsTrigger:

    gcloud functions describe loadHomePage
    
  4. Aby wrócić do edytora Cloud Shell, kliknij Edytor kodu
przycisk 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 urlwdroż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. Wróć do terminala Cloud Shell, aby utworzyć wdrożenie:

    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. Aby wyświetlić dodatek, otwórz lub ponownie załaduj Gmaila. Na pasku narzędzi po prawej stronie odszukaj ikonę z probówką.

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

Opcjonalnie: oczyszczenie

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

  1. Odinstaluj dodatek ze swojego konta Google:

    gcloud workspace-add-ons deployments uninstall quickstart
    
  2. Aby uniknąć obciążenia konta opłatami za zasoby wykorzystane w tym samouczku, usuń projekt Cloud:

    gcloud projects delete PROJECT_ID
    

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

Aby dodać więcej funkcji do dodatku Google Workspace, zapoznaj się z tymi artykułami: