Google Workspace Eklentileri için manifestler

Eklentiler, uygulama ve işleyişiyle ilgili belirli ayrıntıları yapılandırmak için bir manifest dosyası kullanır.

Bu dokümanda, bir web sitesi için manifest dosyası yapılandırma Google Workspace eklentisi.

Google Workspace eklentileri için manifest yapısı

Google Workspace Eklentileri, dokümanın çeşitli yönlerini tanımlamak için manifest dosyasını kullanır. eklentisi görünüm ve davranış.

Google Workspace eklentilerinin manifest özellikleri: manifest nesne yapısının addOns bölümü altında düzenlenmiştir.

  • Apps Script manifest dosyaları hakkında bilgi edinmek için Manifest yapısı başlıklı makaleyi inceleyin.
  • HTTP uç noktalarıyla oluşturulan eklentilerin manifest dosyaları hakkında bilgi edinmek için REST Kaynağı: projects.deployments başlıklı makaleyi inceleyin.

Örnek Google Workspace eklentisi manifest yapılandırması

Aşağıdaki manifest örneğinde, bir manifest dosyasının Google Workspace eklentisini tanımlayan bölümü gösterilmektedir. Bu bölümde aşağıdakiler yer alır:

  • Manifestin addOns.common bölümünde, eklentinin adı, logo URL'si, renkleri ve ana makineye bağlı olmayan diğer genel ayarlar tanımlanır.
  • Manifest, ortak bir ana sayfanın yanı sıra Takvim, Drive, Dokümanlar, E-Tablolar ve Slaytlar'a özel ana sayfaları da tanımlar. Gmail varsayılan ana sayfayı kullanır.
  • Örnek manifest ayarları aşağıdakileri etkinleştirir:
    • eventOpen ve eventUpdated takvimi tetikleyicileri.
    • (Yalnızca Apps Komut Dosyası) İki Takvim konferans çözümü.
    • İki evrensel işlem.
    • Bir Sürüş onItemsSelectedTrigger.
    • Gmail oluşturma işlemi ve bağlamsal tetikleyici.
    • Dokümanlar linkPreviewTriggers nesnesi. Bu tetikleyici hakkında bilgi edinmek için Akıllı çipleri kullanarak bağlantıları önizleme başlıklı makaleyi inceleyin.
    • Dokümanlar createActionTriggers nesnesi. Bu tetikleyici hakkında bilgi edinmek için @ menüsünden üçüncü taraf kaynakları oluşturma başlıklı makaleyi inceleyin.
    • Google Dokümanlar, Google E-tablolar ve Google Dokümanlar ve Slaytlar.
  • oauthScopes alanı proje için yetkilendirme kapsamlarını belirler (genellikle eklentiler).
  • (Yalnızca Apps Komut Dosyası) urlFetchWhitelist alanı, getirilen uç noktaların belirtilen bir HTTPS URL ön ekleriyle eşleşmesini sağlayan bir alandır. Daha fazla bilgi için bkz. URL'leri izin verilenler listesine ekleyin.

Örnekteki bağlantılar açıklamalara yönlendirir o alana karşılık gelen Apps Komut Dosyası için manifest referans dokümanları ve HTTP Google Workspace Eklentileri.

Apps Komut Dosyası

{
  "addOns": {
    "calendar": {
      "createSettingsUrlFunction": "getConferenceSettingsPageUrl",
      "conferenceSolution": [{
        "id": "my-video-conf",
        "logoUrl": "https://lh3.googleusercontent.com/...",
        "name": "My Video Conference",
        "onCreateFunction": "onCreateMyVideoConference"
      }, {
        "id": "my-streamed-conf",
        "logoUrl": "https://lh3.googleusercontent.com/...",
        "name": "My Streamed Conference",
        "onCreateFunction": "onCreateMyStreamedConference"
      }],
      "currentEventAccess": "READ_WRITE",
      "eventOpenTrigger": {
        "runFunction": "onCalendarEventOpen"
      },
      "eventUpdateTrigger": {
        "runFunction": "onCalendarEventUpdate"
      },
      "eventAttachmentTrigger": {
        "label": "My Event Attachment",
        "runFunction": "onCalendarEventAddAttachment"
      },
      "homepageTrigger": {
        "runFunction": "onCalendarHomePageOpen",
        "enabled": true
      }
    },
    "common": {
      "homepageTrigger": {
        "runFunction": "onDefaultHomePageOpen",
        "enabled": true
      },
      "layoutProperties": {
        "primaryColor": "#ff392b",
        "secondaryColor": "#d68617"
      },
      "logoUrl": "https://ssl.gstatic.com/docs/script/images/logo/script-64.png",
      "name": "Demo Google Workspace Add-on",
      "openLinkUrlPrefixes": [
        "https://mail.google.com/",
        "https://script.google.com/a/google.com/d/",
        "https://drive.google.com/a/google.com/file/d/",
        "https://www.example.com/"
      ],
      "universalActions": [{
        "label": "Open settings",
        "runFunction": "getSettingsCard"
      }, {
        "label": "Open Help URL",
        "openLink": "https://www.example.com/help"
      }],
      "useLocaleFromApp": true
    },
    "drive": {
      "homepageTrigger": {
        "runFunction": "onDriveHomePageOpen",
        "enabled": true
      },
      "onItemsSelectedTrigger": {
        "runFunction": "onDriveItemsSelected"
      }
    },
    "gmail": {
      "composeTrigger": {
        "selectActions": [
          {
            "text": "Add images to email",
            "runFunction": "getInsertImageComposeCards"
          }
        ],
        "draftAccess": "METADATA"
      },
      "contextualTriggers": [
        {
          "unconditional": {},
          "onTriggerFunction": "onGmailMessageOpen"
        }
      ]
    },
    "docs": {
      "homepageTrigger": {
        "runFunction": "onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger": {
        "runFunction": "onFileScopeGrantedEditors"
      },
      "linkPreviewTriggers": [
        {
        "runFunction": "onLinkPreview",
        "patterns": [
            {
              "hostPattern": "example.com",
              "pathPrefix": "example-path"
            }
        ],
        "labelText": "Link preview",
        "localizedLabelText": {
          "es": "Link preview localized in Spanish"
        },
        "logoUrl": "https://www.example.com/images/smart-chip-icon.png"
        }
      ],
      "createActionTriggers": [
        {
          "id": "exampleId",
          "labelText": "Example label text",
          "localizedLabelText": {
            "es": "Label text localized in Spanish"
          },
          "runFunction": "exampleFunction",
          "logoUrl": "https://www.example.com/images/case.png"
        }
      ]
    },
    "sheets": {
      "homepageTrigger": {
        "runFunction": "onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger": {
        "runFunction": "onFileScopeGrantedEditors"
      }
    },
    "slides": {
      "homepageTrigger": {
        "runFunction": "onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger": {
        "runFunction": "onFileScopeGrantedEditors"
      }
    }
  },
  "oauthScopes": [
    "https://www.googleapis.com/auth/calendar.addons.execute",
    "https://www.googleapis.com/auth/calendar.addons.current.event.read",
    "https://www.googleapis.com/auth/calendar.addons.current.event.write",
    "https://www.googleapis.com/auth/drive.addons.metadata.readonly",
    "https://www.googleapis.com/auth/gmail.addons.current.action.compose",
    "https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/script.locale",
    "https://www.googleapis.com/auth/script.scriptapp",
    "https://www.googleapis.com/auth/drive.file",
    "https://www.googleapis.com/auth/documents.currentonly",
    "https://www.googleapis.com/auth/spreadsheets.currentonly",
    "https://www.googleapis.com/auth/presentations.currentonly",
    "https://www.googleapis.com/auth/workspace.linkpreview"
  ],
  "urlFetchWhitelist": [
    "https://www.example.com/myendpoint/"
  ]
}

HTTP

{
  "addOns": {
    "calendar": {
      "currentEventAccess": "READ_WRITE",
      "eventOpenTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventOpen"
      },
      "eventUpdateTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventUpdate"
      },
      "eventAttachmentTrigger": {
        "label": "My Event Attachment",
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventAddAttachment"
      },
      "homepageTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarHomePageOpen",
        "enabled": true
      }
    },
    "common": {
      "homepageTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDefaultHomePageOpen",
        "enabled": true
      },
      "layoutProperties": {
        "primaryColor": "#ff392b",
        "secondaryColor": "#d68617"
      },
      "logoUrl": "https://ssl.gstatic.com/docs/script/images/logo/script-64.png",
      "name": "Demo Google Workspace Add-on",
      "openLinkUrlPrefixes": [
        "https://mail.google.com/",
        "https://script.google.com/a/google.com/d/",
        "https://drive.google.com/a/google.com/file/d/",
        "https://www.example.com/"
      ],
      "universalActions": [{
        "label": "Open settings",
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=getSettingsCard"
      }, {
        "label": "Open Help URL",
        "openLink": "https://www.example.com/help"
      }],
      "useLocaleFromApp": true
    },
    "drive": {
      "homepageTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDriveHomePageOpen",
        "enabled": true
      },
      "onItemsSelectedTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDriveItemsSelected"
      }
    },
    "gmail": {
      "composeTrigger": {
        "actions": [
          {
            "label": "Add images to email",
            "runFunction": "https://myownpersonaldomain.com/mypage?trigger=getInsertImageComposeCards"
          }
        ],
        "draftAccess": "METADATA"
      },
      "contextualTriggers": [
        {
          "unconditional": {},
          "onTriggerFunction": "https://myownpersonaldomain.com/mypage?trigger=onGmailMessageOpen"
        }
      ]
    },
    "docs": {
      "homepageTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors"
      },
      "linkPreviewTriggers": [
        {
          "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onLinkPreview",
          "patterns": [
              {
                "hostPattern": "example.com",
                "pathPrefix": "example-path"
              }
          ],
          "labelText": "Link preview",
          "localizedLabelText": {
            "es": "Link preview localized in Spanish"
          },
          "logoUrl": "https://www.example.com/images/smart-chip-icon.png"
        }
      ],
      "createActionTriggers": [
        {
          "id": "exampleId",
          "labelText": "Example label text",
          "localizedLabelText": {
            "es": "Label text localized in Spanish"
          },
          "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCreateAction",
          "logoUrl": "https://www.example.com/images/case.png"
        }
      ]
    },
    "sheets": {
      "homepageTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors"
      }
    },
    "slides": {
      "homepageTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger": {
        "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors"
      }
    }
  },
  "oauthScopes": [
    "https://www.googleapis.com/auth/calendar.addons.execute",
    "https://www.googleapis.com/auth/calendar.addons.current.event.read",
    "https://www.googleapis.com/auth/calendar.addons.current.event.write",
    "https://www.googleapis.com/auth/drive.addons.metadata.readonly",
    "https://www.googleapis.com/auth/gmail.addons.current.action.compose",
    "https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/script.locale",
    "https://www.googleapis.com/auth/script.scriptapp",
    "https://www.googleapis.com/auth/drive.file",
    "https://www.googleapis.com/auth/documents.currentonly",
    "https://www.googleapis.com/auth/spreadsheets.currentonly",
    "https://www.googleapis.com/auth/presentations.currentonly",
    "https://www.googleapis.com/auth/workspace.linkpreview"
  ]
}

URL'leri izin verilenler listesine ekleme

Komut dosyanız veya eklentiniz tarafından erişim için önceden onaylanmış belirli URL'leri belirtmek üzere izin verilenler listelerini kullanırsınız. İzin verilenler listeleri, kullanıcı verilerinin korunmasına yardımcı olur. Bir izin verilenler listesi tanımladığınızda komut dosyası projeleri, izin verilenler listesine eklenmemiş URL'lere erişemez.

Bu alan, bir test dağıtımı yüklediğinizde isteğe bağlıdır ancak şu durumlarda zorunludur: sürümlü bir dağıtım oluşturmanız gerekir.

Komut dosyanız veya eklentiniz performans gösterdiğinde izin verilenler listelerini kullanırsınız şu işlemleri yapabilirsiniz:

  • Harici bir konumdan (HTTPS gibi) bilgi getirir veya getirir uç noktaları) Apps Komut Dosyası'nı UrlFetch kullanarak geliştirmenizi sağlar. URL'leri getirme için izin verilenler listesine eklemek üzere manifest dosyanıza urlFetchWhitelist alanını ekleyin.
  • Kullanıcı işlemine yanıt olarak bir URL açar veya görüntüler ( Kuruluş dışı olan ve görünen URL'leri açan veya görünen Google Workspace Eklentileri Google). URL'leri açmak üzere izin verilenler listesine eklemek içinaddOns.common.openLinkUrlPrefixes manifest dosyası olarak kaydedin.

İzin verilenler listenize ön ek ekleme

Manifest dosyanızda izin verilenler listelerini belirtirken (addOns.common.openLinkUrlPrefixes veya urlFetchWhitelist alanını ekleyerek) URL ön eklerinin listesini eklemeniz gerekir. Manifest'e eklediğiniz ön ekler aşağıdaki şartları karşılamanız gerekir:

  • Her önek geçerli bir URL olmalıdır.
  • Her ön ek için http:// değil, https:// kullanılmalıdır.
  • Her ön ek tam bir alana sahip olmalıdır.
  • Her ön ekin boş olmayan bir yolu olmalıdır. Örneğin, https://www.google.com/ geçerlidir, ancak https://www.google.com geçerli değil.
  • URL alt alan adı öneklerini eşleştirmek için joker karakterler kullanabilirsiniz.
  • * addOns.common.openLinkUrlPrefixes alanını tüm bağlantıları eşleştirmek için kullanabilirsiniz, ancak kullanıcı verilerini riske atabilir ve eklenti incelemesi süreci. Yalnızca eklenti işleviniz gerektiriyorsa joker karakter kullanın.

Bir URL'nin izin verilenler listesindeki bir ön ek ile eşleşip eşleşmediği belirlenirken aşağıdaki kurallar geçerli olur:

  • Yol eşleştirme büyük/küçük harfe duyarlıdır.
  • Önek, URL ile aynıysa eşleşmedir.
  • URL aynıysa veya ön ekin alt öğesiyse eşleşme gerçekleşir.

Örneğin, https://example.com/foo ön eki aşağıdaki URL'lerle eşleşir:

  • https://example.com/foo
  • https://example.com/foo/
  • https://example.com/foo/bar
  • https://example.com/foo?bar
  • https://example.com/foo#bar

Joker karakter kullanma

Hem* urlFetchWhitelist ve addOns.common.openLinkUrlPrefixes alanları. Birden çok alt alan adını eşleştirmek için birden fazla joker karakter kullanamazsınız ve joker karakter, URL'nin başındaki ön eki temsil etmelidir.

Örneğin, https://*.example.com/foo ön eki aşağıdaki URL'lerle eşleşir:

  • https://subdomain.example.com/foo
  • https://any.number.of.subdomains.example.com/foo

https://*.example.com/foo öneki aşağıdakiyle eşleşmez URL'ler:

  • https://subdomain.example.com/bar (son ek uyuşmazlığı)
  • https://example.com/foo (en az bir alt alan adı olmalıdır)

Ön ek kurallarının bazıları, manifest dosyanızı kaydetmeye çalıştığınızda uygulanır. Örneğin, aşağıdaki ön eklerle başlayan önekler kuruluşunuzdaki bir manifest'ini kullanabilirsiniz:

  • https://*.*.example.com/foo (birden fazla joker karakter kullanılamaz)
  • https://subdomain.*.example.com/foo (joker karakterler, ön ek olarak kullanılmalıdır)