Google Workspace Eklentileri için manifestler

Apps Komut Dosyası projeleri, komut dosyası ve çalışmasıyla ilgili belirli ayrıntıları yapılandırmak için manifest dosyası kullanır. Bir manifesti nasıl görüntüleyeceğinizi ve düzenleyeceğinizi öğrenmek için Manifestler bölümüne bakın.

Bu dokümanda, bir Google Workspace eklentisi için manifest yapılandırma ayrıntıları ele alınmaktadır.

Google Workspace Eklentileri için manifest yapısı

Google Workspace Eklentileri, eklentinin görünümünün ve davranışının çeşitli yönlerini tanımlamak için Apps Komut Dosyası proje manifest dosyasını kullanır. Google Workspace Eklentileri için manifest özellikleri, manifest nesne yapısının addOns bölümü altında düzenlenmiştir.

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

Aşağıdaki manifest dosyası, bir Google Workspace Eklentilerini tanımlayan manifest dosyası bölümünü aşağıdaki özellikler de dahil olmak üzere göstermektedir:

  • Manifest'in addOns.common bölümü, eklentinin adını, logo URL'sini, renkleri ve diğer genel, ana makineden bağımsız ayarları tanımlar.
  • Manifest, ortak bir ana sayfayı tanımlar ancak 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:
    • Takvim eventOpen ve eventUpdated tetikleyicisi ile iki Takvim konferans çözümü.
    • İki evrensel işlem.
    • Sürüş onItemsSelectedTrigger.
    • Gmail oluşturma işlemi ve bağlamsal tetikleyici.
    • Dokümanlar linkPreviewTrigger. Bu tetikleyici hakkında bilgi edinmek için Bağlantıları akıllı çiplerle önizleme bölümüne bakın.
    • Dokümanlar, E-Tablolar ve Slaytlar için dosyaya özel arayüzler.
  • oauthScopes alanı, proje için yetkilendirme kapsamlarını ayarlar (genellikle eklentiler için gereklidir).
  • urlFetchWhitelist alanı, getirilen uç noktaların belirtilen HTTPS URL önekleri listesiyle eşleşmesini sağlayan bir alandır. Daha fazla bilgi için URL'leri izin verilenler listesine ekleme bölümünü inceleyin.

Örnekteki bağlantılar, manifest referans belgelerindeki bu alanın açıklamalarına yönlendirir.

{
  "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://en.wikipedia.org/wiki/",
        "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"
        }
      ]
    },
    "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/"
  ]
}

URL'leri izin verilenler listesine ekleme

Komut dosyanız veya eklentiniz tarafından erişim için önceden onaylanmış belirli URL'ler belirlemek ü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, test dağıtımı yüklerken isteğe bağlıdır ancak sürümü oluşturulmuş bir dağıtım oluşturduğunuzda zorunludur.

Komut dosyanız veya eklentiniz aşağıdaki işlemleri gerçekleştirdiğinde izin verilenler listelerini kullanırsınız:

  • Apps Komut Dosyası UrlFetch hizmetini kullanarak harici bir konumdan (ör. HTTPS uç noktaları) bilgi alır veya getirir. Getirmek üzere URL'leri izin verilenler listesine eklemek için manifest dosyanıza urlFetchWhitelist alanını ekleyin.
  • Kullanıcı işlemine yanıt olarak bir URL açar veya görüntüler (Google harici URL'leri açan veya görüntüleyen Google Workspace Eklentileri için gereklidir). Açmak üzere URL'leri izin verilenler listesine eklemek için manifest dosyanıza addOns.common.openLinkUrlPrefixes alanını ekleyin.

İzin verilenler listenize ön ekler ekleme

Manifest dosyanızda izin verilenler listeleri belirttiğinizde (addOns.common.openLinkUrlPrefixes veya urlFetchWhitelist alanını ekleyerek) URL öneklerinin listesini eklemeniz gerekir. Manifest'e eklediğiniz önekler aşağıdaki şartları karşılamalıdır:

  • Her önek geçerli bir URL olmalıdır.
  • Her ön ek http:// değil https:// kullanmalıdır.
  • Her önekin tam bir alan adı 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ğildir.
  • URL alt alan adı öneklerini eşleştirmek için joker karakterler kullanabilirsiniz.
  • Tüm bağlantıları eşleştirmek için addOns.common.openLinkUrlPrefixes alanında tek bir * joker karakteri kullanılabilir ancak bu, kullanıcı verilerini riske atabileceği ve eklenti inceleme sürecini uzatabileceği için önerilmez. Yalnızca eklenti işlevselliğiniz gerektiriyorsa joker karakter kullanın.

Bir URL'nin izin verilenler listesindeki bir önekle eşleşip eşleşmediğini belirlerken aşağıdaki kurallar geçerlidir:

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

Örneğin, https://example.com/foo öneki şu 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 karakterler kullanma

Hem urlFetchWhitelist hem de addOns.common.openLinkUrlPrefixes alanları için bir alt alan adını eşleştirmek amacıyla tek bir joker karakter (*) kullanabilirsiniz. Birden çok alt alan adını eşleştirmek için birden fazla joker karakter kullanamazsınız ve joker karakter, URL'nin baştaki önekini temsil etmelidir.

Örneğin, https://*.example.com/foo öneki şu 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ğıdaki URL'lerle eşleşmez:

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

Manifest'inizi kaydetmeye çalışırken bazı ön ek kuralları zorunlu kılınır. Örneğin, aşağıdaki önekler kaydetmeye çalışırken manifestinizde yer alıyorsa hataya neden olur:

  • https://*.*.example.com/foo (birden fazla joker karakter kullanılması yasaktır)
  • https://subdomain.*.example.com/foo (başta joker karakterler kullanılmalıdır)