Düzenleyici eklentisi yetkilendirmesi

Apps Komut Dosyası tabanlı uygulamaların çoğunda yetkilendirme kolaydır çünkü komut dosyası projesi, bir kullanıcı bir işlem yapmaya çalıştığında ihtiyaç duyduğu eksik izinleri istiyor sahip olacaksınız.

Yetkilendirme modeli Düzenleyici Eklentileri çeşitli nedenlerle daha karmaşıktır:

  • Kullanıcı bir dosya oluşturduğunda, kullanıcının yüklediği tüm eklentiler Uzantılar menüsünde listeleniyor veya (kullanıcı bu eklentileri henüz yetkilendirmediyse).

  • Bu eklentiler şu dosyalarda çalışır: Ortak çalışanlarla paylaşılabilen Google Drive. Ortak çalışmayanlar Dokümanlarda görmek için Düzenleyici eklentisini yüklemeniz gerekir. dosyayı oluşturan kişi tarafından kullanılan dosya.

  • Düzenleyici Eklentileri, onOpen() eklentisini otomatik olarak çalıştırır. bir doküman açıldığında işlev görür.

Kullanıcı verilerini korumak için, bazı hizmetlerin kullanılabilmesini sağlayan yetkilendirme modları onOpen() tarafından kullanılamaz. Bu kılavuz, kodunuzun ne olduğunu anlamanıza yardımcı olabilir. ne zaman yapılacağını öğreneceğiz.

Yetkilendirme modeli

Düzenleyici eklentilerinin yetkilendirme modu durumu (eklentiyi yükleyen kullanıcıya) bağlıdır. ortak bir nedeniniz var.

Düzenleyici Eklenti durumları

Uzantılar menüsündeki Düzenleyici Eklentileri: yüklü, etkin veya her ikisi birden.

  • Belirli bir kullanıcı için eklenti yüklü veya yöneticileri, Google Workspace Marketplace'e giriş yaparak Google verilerine erişmesi için yetkilendirebilirsiniz.
  • Eklenti doküman, form ve formda etkinleştirilir sunu veya elektronik tablolara dönüştürülebilir.
  • Kullanıcılar bir dosya üzerinde ortak çalışırken ve onlardan biri Eklenti, bir kullanıcı için yüklenir ve etkinleştirildi.

Aşağıdaki tabloda yüklü ve etkin arasındaki farklar özetlenmiştir. komut dosyasını eklenti olarak test etme testi bu durumlardan birinde veya her ikisinde çalıştırabilirsiniz.

Yüklendi Etkin
Geçerlilik kapsamı: Kullanıcı Doküman, form, sunu veya e-tablo
Yol açan neden: Mağazadan eklenti alma Uygulamayı kullanırken mağazadan eklenti alma bu doküman, form, sunu veya e-tablo ya da
Burada, daha önce yüklenmiş doküman, form, sunu veya e-tablo
Menü şunlara görünür: Yalnızca o kullanıcı, tüm dokümanlarda, formlarda, sunularda veya e-tablo açabilirler. dokümandaki, formdaki, sunudaki tüm ortak çalışanlar veya e-tablo
onOpen() için yetkilendirme modu
AuthMode.NONE (aynı zamanda etkinleştirilmemişse AuthMode.LIMITED)
AuthMode.LIMITED

Yetkilendirme modları

Düzenleyici eklentisi çalıştırmalarının onOpen() işlevi Kullanıcı bir doküman, form, sunu veya e-tablo açtığında otomatik olarak. Kullanıcıların güvenliğini korumak için Apps Komut Dosyası, onOpen() işlevinin yapabileceği işlemler. Düzenleyici eklentisi durumu onOpen() işlevinin hangi yetkilendirme modunda çalışacağını belirler.

Dosyada bir Düzenleyici eklentisi etkinse onOpen(), form, sunu veya e-tablo gibi AuthMode.LIMITED. Eklenti etkin değilse ve yalnızca yüklenir, onOpen() ise AuthMode.NONE içinde çalışır.

AuthMode.NONE ürününde bir eklenti belirli kullanıcı eklentiyle etkileşime girene kadar özel işlevleri tıklayabilir veya çalıştırabilirsiniz. Eğer eklentisi, onOpen() uygulamasında bu hizmetleri kullanmaya çalışıyor. onInstall() veya global kapsam, izinler başarısız olur ve diğer çağrılar, menüleri doldurmak, durun. Desteklenen tek seçenek Yardım'dır.

Kısıtlanmış hizmet çağrılarını çalıştırmak için AuthMode.FULL yetkilendirmesini kullanmanız gerekir yatırım yapmanız önemlidir. Menü seçeneğini tıklama ve yalnızca bu modda çalışır. Kod AuthMode.FULL modunda çalıştırıldıktan sonra eklentisi, kullanıcının yetkilendirdiği tüm kapsamları kullanabilir.

Apps Komut Dosyası, yetkilendirme modunu geçer Apps Komut Dosyası'nın authMode özelliği olarak event parametresi, e; şunun değeri: e.authMode, Apps Komut Dosyası'nda bir sabit değere karşılık gelir ScriptApp.AuthMode sıralaması.

Yetkilendirme modları tüm Apps Komut Dosyası yürütme yöntemleri için geçerlidir. komut dosyası düzenleyiciden, menü öğesinden veya Apps Komut Dosyası'ndan çalıştırma dahil. google.script.run araması. Ancak, e.authMode özelliği, yalnızca sonuç olarak komut dosyası çalışırsa incelenebilir onOpen(), onEdit() gibi bir tetikleyici veya onInstall(). Özel işlevler e-Tablolar'da kendi yetkilendirme modunu kullanır (AuthMode.CUSTOM_FUNCTION, Bu, LIMITED ile benzer ancak biraz farklı kısıtlamalara sahiptir. Herkes için Diğer durumlarda, komut dosyaları aşağıdaki örnekte açıklandığı gibi AuthMode.FULL içinde çalışır: tablosunu oluşturalım.

NONE LIMITED CUSTOM_FUNCTION FULL
Geçme süresi: onOpen() (kullanıcı bir Gmail'de veya Google Dokümanlar'da sunum veya e-tablo) onOpen() (diğer tüm zamanlar)
onEdit() (yalnızca E-Tablolar'da)
Özel işlevler
dahil diğer tüm zamanlar yüklenebilir tetikleyiciler
onInstall()
google.script.run
Kullanıcı verilerine erişim Yalnızca yerel ayar Yalnızca yerel ayar Yalnızca yerel ayar Evet
Doküman, form, sunu veya e-tabloya erişim Hayır Evet Evet — salt okunur Evet
Kullanıcı arayüzüne erişim Menü öğeleri ekleme Menü öğeleri ekleme Hayır Evet
Properties erişimi Hayır Evet Evet Evet
Jdbc, UrlFetch erişimi Hayır Hayır Evet Evet
Diğer hizmetler Logger
Utilities
Kullanıcı verilerine erişmeyen hizmetler Kullanıcı verilerine erişmeyen hizmetler Tüm hizmetler

Düzenleyici eklentisinin yetkilendirme yaşam döngüsü

Geçerli kullanıcı için bir eklenti yüklendiğinde veya geçerli dosyada etkinleştirilmişse eklentisi yüklenir. veya e-tablo açabilirler. Eklenti Uzantılar menüsünde listelenir ve basit tetikleyiciler onInstall(), onOpen() ve onEdit(). Kullanıcı bir Uzantılar menü öğesi, çalışır.

Düzenleyici eklentisi yüklendi.

Mağazadan bir Düzenleyici eklentisi yüklendiğinde, onInstall() işlevi AuthMode.FULL içinde çalışır. Bu yetkilendirme modunda karmaşık bir kurulum rutini çalıştırabilir. Ayrıca menü öğelerini oluşturmak için onInstall() kullanın, çünkü doküman, form, sunu veya e-tablo zaten açıktır ve onOpen() işleviniz çalışmamıştır. Aşağıdaki örnekte, onOpen() işlevinin nasıl çağrılacağı gösterilmektedir onInstall() işlevinden:

function onInstall(e) {
  onOpen(e);
  // Perform additional setup as needed.
}

Düzenleyici eklentisi açıldı

Bir doküman, form, sunu veya e-tablo açıldığında Geçerli kullanıcının yüklediği Düzenleyici eklentisi veya dosyada herhangi bir ortak çalışanın etkinleştirdiği ve onOpen() işlevlerinin her biri. onOpen() tarafından belirlenen yetkilendirme modu eklentinin çalışma şekline yüklü veya etkin.

Eklenti yalnızca temel bir menü oluşturuyorsa mod, önemli değildir. Aşağıdaki örnekte temel bir onOpen() işlevi gösterilmektedir:

function onOpen(e) {
  SpreadsheetApp.getUi().createAddonMenu() // Or DocumentApp.
      .addItem('Insert chart', 'insertChart')
      .addItem('Update charts', 'updateCharts')
      .addToUi();
}

Depolanan Apps Komut Dosyası'na dayalı dinamik menü öğeleri eklemek için özelliklerini kullanın: veya diğer gelişmiş görevleri yerine getirmek üzere , yetkilendirme modunu tanımlamalı ve uygun şekilde işlemelidir.

Aşağıdaki örnekte, değerini değiştiren gelişmiş bir onOpen() işlevi gösterilmektedir işlem:

function onOpen(e) {
  var menu = SpreadsheetApp.getUi().createAddonMenu(); // Or DocumentApp.
  if (e && e.authMode == ScriptApp.AuthMode.NONE) {
    // Add a normal menu item (works in all authorization modes).
    menu.addItem('Start workflow', 'startWorkflow');
  } else {
    // Add a menu item based on properties (doesn't work in AuthMode.NONE).
    var properties = PropertiesService.getDocumentProperties();
    var workflowStarted = properties.getProperty('workflowStarted');
    if (workflowStarted) {
      menu.addItem('Check workflow status', 'checkWorkflow');
    } else {
      menu.addItem('Start workflow', 'startWorkflow');
    }
  }
  menu.addToUi();
}

Eklentilerin çalışırken kenar çubukları veya iletişim kutuları açamayacağını unutmayın AuthMode.LIMITED Menü öğelerini kullanabilirsiniz. AuthMode.FULL üzerinde çalıştığı için kenar çubuklarını ve iletişim kutularını aç.

Kullanıcı, düzenleyici eklentisini çalıştırıyor.

Kullanıcı bir Uzantılar menü öğesini tıkladığında, Apps Komut Dosyası öncelikle kullanıcının ve isterse bunu yapmaya teşvik eder. Kullanıcı komut dosyası, AuthMode.FULL öğesindeki menü öğesine karşılık gelir. İlgili içeriği oluşturmak için kullanılan eklentinin doküman, form, bir e-tablo veya sunum oluşturun.

Oluşturulmayan eklenti menüleriyle ilgili sorunları giderme

Kodunuz varsa eklenti menünüz oluşturulmayabilir hesabı, yetkilendirme modlarını doğru şekilde yönetmez. Örneğin:

  • Bir eklenti, Apps Komut Dosyası çalıştırmaya çalışıyor ve geçerli yetkilendirme modunda desteklemediğini söylüyor:

  • Bir eklenti, kullanıcıdan önce hizmet çağrısı yürütmeye çalışıyor etkileşimde bulunur.

AuthMode.NONE, aşağıdaki işlemleri deneyin:

  1. Eklentinizin Apps Komut Dosyası projesini açın ve onOpen() işlevini kullanın.
  2. onOpen() işlevinde Apps Komut Dosyası'ndaki ifadeleri arayın bunlarla ilişkili hizmetler veya nesneler (örneğin, PropertiesService, SpreadsheetApp veya GmailApp.
  3. Bir hizmet, kullanıcı arayüzü öğeleri oluşturmak dışında bir şey için kullanılıyorsa bunu kaldırabilir veya bir yorum blokuna sarmalayabilirsiniz. Yalnızca şu yöntemleri bırakın: .getUi(), .createMenu(), .addItem(), ve .addToUi(). Ayrıca, işlev dışındaki hizmetleri bulup kaldırın.
  4. Yorum yapılan veya kaldırılan kod satırlarını içerebilecek işlevleri tanımlama başta ürettikleri bilgileri kullananlar olmak üzere, bir önceki adımda ve hizmet çağrılarını bunlara ihtiyaç duyan işlevlere taşıyın. Yeniden düzenleyin veya yeniden yazın kod tabanınızı önceki adımlarda yapılan değişikliklere uygun şekilde ayarlayın.
  5. Kodu kaydedin ve bir test dağıtımı oluşturun.

    Test dağıtımı oluşturduğunuzda Config (Yapılandırma) alanının Geçerli kullanıcı için yüklendi mesajı gösteriliyorsa ve Yapılandırma kutusunun altında AuthMode.None uygulamasında test edin

  6. Test dağıtımını başlatın ve Uzantılar menüsünü açın.

  7. Tüm menü öğeleri gösteriliyorsa sorun çözülmüş demektir. Yalnızca Yardım menüsünü görüyorsanız 1. adıma geri dönün. Cevapsız hizmet araması yapmış olabilirsiniz.