Komut dosyası projesi, kullanıcılar uygulamayı kullanmaya çalıştığında ihtiyaç duyduğu eksik izinleri istediği için Apps Script tabanlı birçok uygulamanın yetkilendirmesi kolaydır.
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, bir doküman açıldığında işlevlerini otomatik olarak çalıştırır.
Kullanıcı verilerini korumak için, bazı hizmetlerin onOpen()
tarafından kullanılamamasını sağlayan yetkilendirme modları uygulanır. 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 çalışma yapabilirsiniz.
Düzenleyici Eklenti durumları
Uzantılar menüsündeki Düzenleyici Eklentileri yüklü, etkin veya her ikisi olmalıdır.
- 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 dosyada ortak çalışırken bunlardan biri eklenti kullandığında eklenti, ilgili kullanıcı için yüklenir ve dosya için etkinleştirilir.
Aşağıdaki tabloda yüklü ve etkin arasındaki farklar özetlenmiştir. Bir komut dosyasını eklenti olarak test ettiğinizde testi bu iki durumdan birinde veya her ikisinde de çalıştırabileceğinizi unutmayın.
Yüklendi | Etkin | |
---|---|---|
Geçerlilik kapsamı: | Kullanıcı | Doküman, form, sunu veya e-tablo |
Yol açan neden: | Mağazadan eklenti alma | Söz konusu dokümanı, formu, sunuyu veya e-tabloyu kullanırken mağazadan eklenti edinme veya Daha önce yüklenen bir eklentiyi söz konusu dokümanda, formda, sunu |
Menü şunlara görünür: | Yalnızca ilgili kullanıcı, açtığı veya oluşturduğu tüm dokümanlarda, formlarda, sunularda ya da e-tablolarda | İlgili doküman, form, sunu veya e-tablodaki tüm ortak çalışanlar |
onOpen() için yetkilendirme modu |
AuthMode.NONE
(aynı zamanda etkinleştirilmemişse
AuthMode.LIMITED) |
AuthMode.LIMITED |
Yetkilendirme modları
Düzenleyici eklentisinin onOpen()
işlevi, kullanıcı bir doküman, form, sunu veya e-tablo açtığında otomatik olarak çalışır.
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.
Dosya, form, sunu veya e-tabloda bir Düzenleyici eklentisi etkinleştirildiyse onOpen()
, AuthMode.LIMITED
'te çalışır. 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. Eklentiniz bu hizmetleri onOpen()
, onInstall()
veya genel kapsamda kullanmaya çalışırsa izinler geçersiz olur ve menü doldurma gibi diğer çağrılar durdurulur. Desteklenen tek seçenek Yardım'dır.
Kısıtlanmış hizmet çağrıları çalıştırmak için AuthMode.FULL
yetkilendirme modunu kullanmanız gerekir. Menü seçeneğini tıklama gibi kullanıcı etkileşimi işlevleri yalnızca bu modda çalışır. Kod AuthMode.FULL
modunda çalıştırıldıktan sonra eklenti, 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 komut dosyası onOpen()
, onEdit()
veya onInstall()
gibi bir tetikleyici sonucunda çalıştırılıyorsa denetlenir. Ö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 |
|
---|---|---|---|---|
Gerçekleşme zamanı | onOpen() (kullanıcı bir eklenti yüklediyse ancak dokümanda, formda, sunu veya e-tabloda etkinleştirmediyse) |
onOpen() (diğer tüm zamanlar)onEdit() (yalnızca E-Tablolar'da) |
Özel işlevler | Aşağıdakiler dahil olmak üzere 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ümana, forma, sunuya 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 tüm hizmetler | Tüm hizmetler |
Düzenleyici eklentisinin yetkilendirme yaşam döngüsü
Mevcut kullanıcı için yüklenen veya mevcut dosyada etkinleştirilen eklentiler, ilgili dosya, form, sunu veya e-tablo açıldığında yüklenir. Eklenti, Uzantılar menüsünde listelenir ve basit tetikleyicileri onInstall()
, onOpen()
ve onEdit()
dinlemeye başlar. Kullanıcı bir Uzantılar menüsü öğesini tıklarsa ilgili uzantı çalıştırılır.
Düzenleyici eklentisi yüklendi.
Düzenleyici eklentisi mağazadan yüklendiğinde onInstall()
işlevi AuthMode.FULL
'te ç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, onInstall()
işlevinden onOpen()
işlevinin nasıl çağrılacağı gösterilmektedir:
function onInstall(e) {
onOpen(e);
// Perform additional setup as needed.
}
Düzenleyici eklentisi açılır.
Bir doküman, form, sunu veya e-tablo açıldığında, mevcut kullanıcının yüklediği veya ortak çalışanın dosyada etkinleştirdiği tüm Düzenleyici eklentileri yüklenir ve bu eklentilerin her birinin onOpen()
işlevleri çağrılır. onOpen()
'ın çalıştığı yetkilendirme modu, eklentinin yüklü veya etkin olup olmadığına bağlıdır.
Bir eklenti yalnızca temel bir menü oluşturuyorsa modun önemi yoktur. 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 Script mülklerine dayalı dinamik menü öğeleri eklemek, mevcut dosyanın içeriğini okumak veya diğer gelişmiş görevleri gerçekleştirmek için yetkilendirme modunu tanımlamanız ve uygun şekilde kullanmanız gerekir.
Aşağıdaki örnekte, işlemini yetkilendirme moduna göre değiştiren gelişmiş bir onOpen()
işlevi gösterilmektedir:
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 AuthMode.LIMITED
içinde çalışırken kenar çubukları veya iletişim kutuları açamayacağını unutmayın. Yan panelleri ve iletişim kutularını açmak için menü öğelerini kullanabilirsiniz. Bunlar AuthMode.FULL
'da çalışır.
Kullanıcı, Düzenleyici Eklentisi'ni çalıştırır
Kullanıcı bir Uzantılar menü öğesini tıkladığında Apps Script öncelikle kullanıcının eklentiyi yükleyip yüklemediğini kontrol eder ve yüklemediyse yüklemesini ister. Kullanıcı eklentiye yetki verdiyse komut dosyası, AuthMode.FULL
'teki menü öğesine karşılık gelen işlevi çalıştırır. İlgili içeriği oluşturmak için kullanılan
eklentinin doküman, form,
bir e-tablo veya sunum oluşturun.
Eklenti menüsünün oluşturulmamasıyla 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ı onunla etkileşime geçmeden önce bir hizmet çağrısı çalıştırmaya çalışır.
AuthMode.NONE
'te izin hatalarına neden olan bir hizmet çağrısını kaldırmak veya yeniden düzenlemek için aşağıdaki işlemleri deneyin:
- Eklentinizin Apps Komut Dosyası projesini açıp
onOpen()
işlevini bulun. onOpen()
işlevinde Apps Komut Dosyası'ndaki ifadeleri arayın bunlarla ilişkili hizmetler veya nesneler (örneğin,PropertiesService
,SpreadsheetApp
veyaGmailApp
.- 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. - 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. Önceki adımlarda yapılan değişikliklere uyum sağlamak için kod tabanınızı yeniden düzenleyin veya yeniden yazın.
Kodu kaydedin ve test dağıtımı oluşturun.
Test dağıtımı oluştururken Yapılandırma alanının Mevcut kullanıcı için yüklü olduğundan ve Yapılandırma kutusunun altındaki metinde
AuthMode.None
'de test et ifadesinin bulunduğundan emin olun.Test dağıtımını başlatın ve Uzantılar menüsünü açın.
Tüm menü öğeleri gösteriliyorsa sorun düzeltilmiştir. Yalnızca Yardım menüsünü görüyorsanız 1. adıma geri dönün. Cevapsız hizmet araması yapmış olabilirsiniz.