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:
- Eklentinizin Apps Komut Dosyası projesini açın ve
onOpen()
işlevini kullanın. 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, bir işlevin 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. Yeniden düzenleyin veya yeniden yazın kod tabanınızı önceki adımlarda yapılan değişikliklere uygun şekilde ayarlayın.
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 edinTest dağıtımını başlatın ve Uzantılar menüsünü açın.
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.