En deneyimli geliştiriciler bile kodu ilk denemede nadiren doğru yazar. Bu da sorun gidermeyi geliştirme sürecinin önemli bir parçası haline getirir. Bu bölümde, komut dosyalarınızdaki hataları bulmanıza, anlamanıza ve hata ayıklamanıza yardımcı olabilecek bazı teknikleri ele alacağız.
Hata mesajları
Komut dosyanız bir hatayla karşılaştığında hata mesajı gösterilir. İletinin yanında, sorun giderme için kullanılan bir satır numarası bulunur. Bu şekilde gösterilen iki temel hata türü vardır: söz dizimi hataları ve çalışma zamanı hataları.
Söz dizimi hataları
Söz dizimi hataları, JavaScript dil bilgisine uymayan kod yazılmasından kaynaklanır ve komut dosyasını kaydetmeye çalıştığınız anda tespit edilir. Örneğin, aşağıdaki kod snippet'inde söz dizimi hatası vardır:
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ";
MailApp.sendEmail('john@example.com',
'Data in row ' + rowNumber,
rowData);
}
Buradaki söz dizimi sorunu, dördüncü satırın sonunda )
karakterinin eksik olmasıdır. Komut dosyasını kaydetmeye çalıştığınızda aşağıdaki hatayı alırsınız:
Parametre listesinden sonra ) eksik. (4. satır)
Bu tür hatalar hemen tespit edildiği ve genellikle basit nedenlerden kaynaklandığı için genellikle kolayca giderilebilir. Söz dizimi hataları içeren dosyaları kaydedemezsiniz. Bu nedenle, projenize yalnızca geçerli kod kaydedilir.
Çalışma zamanı hataları
Bu hatalar, bir işlevin veya sınıfın yanlış kullanılmasından kaynaklanır ve yalnızca komut dosyası çalıştırıldıktan sonra tespit edilebilir. Örneğin, aşağıdaki kod çalışma zamanında hata oluşturur:
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ");
MailApp.sendEmail('john',
'Data in row ' + rowNumber,
rowData);
}
Kod doğru şekilde biçimlendirilmiş ancak MailApp.sendEmail
çağrılırken e-posta adresi için "can" değeri iletiliyor. Bu geçerli bir e-posta adresi olmadığından komut dosyası çalıştırıldığında aşağıdaki hata meydana gelir:
Geçersiz e-posta: john (satır 5)
Bu hataların sorun giderme sürecini daha da zorlaştıran şey, genellikle bir işleve ilettiğiniz verilerin koda yazılmaması, bunun yerine bir e-tablodan, formdan veya başka bir harici veri kaynağından çekilmesidir. Aşağıdaki hata ayıklama tekniklerini kullanarak bu hataların nedenini belirleyebilirsiniz.
Yaygın görülen hatalar
Sık karşılaşılan hataların ve nedenlerinin listesi aşağıda verilmiştir.
Hizmet çok fazla kez çağrıldı: <action name>
Bu hata, belirli bir işlem için günlük kotanızı aştığınızı gösterir. Örneğin, tek bir günde çok fazla e-posta gönderirseniz bu hatayla karşılaşabilirsiniz. Tüketici, alan ve Premier hesaplar için farklı düzeylerde ayarlanan kotalar, Google tarafından önceden duyuru yapılmadan herhangi bir zamanda değiştirilebilir. Çeşitli işlemlere ilişkin kota sınırlarını Apps Komut Dosyası kota dokümanlarında bulabilirsiniz.
Sunucu kullanılamıyor. veya Sunucu hatası oluştu, lütfen tekrar deneyin.
Bu hataların birkaç olası nedeni vardır:
- Bir Google sunucusu veya sistemi geçici olarak kullanılamıyor. Birkaç dakika bekleyip komut dosyasını tekrar çalıştırmayı deneyin.
- Komut dosyanızda, karşılık gelen bir hata mesajı olmayan bir hata var. Komut dosyanızda hata ayıklamayı deneyin ve sorunu tespit edip edemeyeceğinize bakın.
- Google Apps Komut Dosyası'nda bu hataya neden olan bir hata var. Hata raporlarını arama ve göndermeyle ilgili talimatlar için Hata başlıklı makaleyi inceleyin. Yeni bir hata bildirmeden önce, başkalarının bildirmiş olup olmadığını görmek için arama yapın.
Bu işlemi gerçekleştirmek için yetkilendirme gerekiyor.
Bu hata, komut dosyasının çalıştırılması için gereken yetkilendirmenin eksik olduğunu gösterir. Bir komut dosyası Komut Dosyası Düzenleyici'de veya özel bir menü öğesinden çalıştırıldığında kullanıcıya yetkilendirme iletişim kutusu gösterilir. Ancak bir komut dosyası bir tetikleyiciden çalıştırıldığında, Google Sites sayfasına yerleştirildiğinde veya hizmet olarak çalıştırıldığında iletişim kutusu gösterilemez ve bu hata gösterilir.
Komut dosyasını yetkilendirmek için Komut Dosyası Düzenleyici'yi açıp herhangi bir işlevi çalıştırın. Komut dosyası projesine yetki verebilmeniz için yetkilendirme istemi gösterilir. Komut dosyası yeni yetkisiz hizmetler içeriyorsa komut dosyasını yeniden yetkilendirmeniz gerekir.
Bu hata genellikle kullanıcının yetkilendirmeden önce tetiklenen tetikleyicilerden kaynaklanır. Komut dosyası projesine erişiminiz yoksa (örneğin, hata kullandığınız bir eklentide ortaya çıktığı için) genellikle eklentiyi tekrar kullanarak komut dosyasını yetkilendirebilirsiniz. Bir tetikleyici tetiklenmeye devam edip bu hataya neden oluyorsa aşağıdakileri yaparak tetikleyicilerinizi kaldırabilirsiniz:
- Apps Script projesinin sol tarafında Tetikleyiciler'i tıklayın.
- Kaldırmak istediğiniz tetikleyicinin sağ tarafında Diğer > Tetikleyiciyi sil'i tıklayın.
Sorunlu eklenti tetikleyicilerini eklentiyi kaldırarak da kaldırabilirsiniz.
Erişim reddedildi: DriveApp veya Üçüncü taraf Drive uygulamaları alan politikası tarafından devre dışı bırakıldı
alan adlarının yöneticileri, alan adları için Drive API'yi devre dışı bırakabilir. Bu durumda, kullanıcıların Google Drive uygulamalarını yüklemesi ve kullanması engellenir. Bu ayar, kullanıcıların Drive hizmetini veya Gelişmiş Drive Hizmeti'ni kullanan Apps Script eklentilerini kullanmasını da engeller (komut dosyası, yönetici Drive API'yi devre dışı bırakmadan önce yetkilendirilmiş olsa bile).
Ancak Drive hizmetini kullanan bir eklenti veya web uygulaması alan genelinde yükleme için yayınlanırsa ve yönetici tarafından alan adındaki kullanıcıların bir kısmı veya tamamı için yüklenirse komut dosyası, alan adında Drive API devre dışı bırakılmış olsa bile bu kullanıcılar için çalışır.
Komut dosyasının etkin kullanıcının kimliğini alma izni yok.
Etkin kullanıcının kimliğinin ve e-postasının komut dosyasında kullanılamadığını gösterir. Bu uyarı, Session.getActiveUser()
adresine yapılan bir aramadan kaynaklanıyor.
Komut dosyası AuthMode.FULL
dışında bir yetkilendirme modunda çalışıyorsa Session.getEffectiveUser()
çağrısından da kaynaklanabilir.
Bu uyarı gönderilirse User.getEmail()
için yapılan sonraki çağrılar yalnızca "" döndürür.
Komut dosyasının çalıştığı yetkilendirme moduna bağlı olarak bu uyarıyla ilgili sorunları gidermenin birkaç yolu vardır. Yetkilendirme modu, tetikleyici işlevlerde e
etkinlik parametresinin authMode
mülkü olarak gösterilir.
AuthMode.FULL
yerineSession.getEffectiveUser()
kullanabilirsiniz.AuthMode.LIMITED
'te, sahibin komut dosyasını yetkilendirdiğinden emin olun.- Diğer yetkilendirme modlarında bu iki yöntemi çağırmayın.
- Yüklenebilir tetikleyici nedeniyle bu uyarıyı yeni deneyimleyen bir müşteriyseniz tetikleyicinin kuruluşunuzdaki bir kullanıcı olarak çalıştığından emin olun.
Kitaplık eksik
Komut dosyanıza popüler bir kitaplık eklerseniz kitaplık, komut dosyanız için bağımlılık olarak listelenmesine rağmen kitaplığın eksik olduğunu belirten bir hata mesajı alabilirsiniz. Bunun nedeni, kitaplığa aynı anda çok fazla kişinin erişmesi olabilir. Bu hatayı önlemek için aşağıdaki çözümlerden birini deneyin:
- Kitaplığın kodunu kopyalayıp komut dosyanıza yapıştırın ve kitaplık bağımlılığını kaldırın.
- Kitaplık komut dosyasını kopyalayıp hesabınızdan kitaplık olarak dağıtın. Orijinal komut dosyanızdaki bağımlılığı, herkese açık kitaplık yerine yeni kitaplıkla güncellediğinizden emin olun.
Kitaplık sürümü veya dağıtım sürümü eksik olduğundan hata oluştu. Not_Found hata kodu
Bu hata mesajı aşağıdakilerden birini gösterir:
- Komut dosyasının dağıtılan sürümü silindi. Komut dosyanızın dağıtılan sürümünü güncellemek için Sürüm içeren bir dağıtımı düzenleme bölümüne bakın.
- Komut dosyasının kullandığı kitaplığın sürümü silindi. Hangi kitaplığın eksik olduğunu kontrol etmek için kitaplık adının yanındaki > Yeni sekmede aç'ı tıklayın. Eksik kitaplık hata mesajı verir. Güncellemeniz gereken kitaplığı bulduktan sonra aşağıdaki işlemlerden birini yapın:
- Kitaplığı farklı bir sürümü kullanacak şekilde güncelleyin. Kitaplığı güncelleme başlıklı makaleyi inceleyin.
- Silinen kitaplığı komut dosyası projenizden ve kodunuzdan kaldırın. Kitaplığı kaldırma başlıklı makaleyi inceleyin.
Diğer
- Komut dosyanızın kullandığı kitaplığın komut dosyası, silinmiş bir sürümü kullanan başka bir kitaplık içeriyor. Aşağıdaki işlemlerden birini yapın:
- Senaryonuzun kullandığı kitaplığa düzenleme erişiminiz varsa söz konusu senaryodaki ikincil kitaplığı mevcut bir sürüme güncelleyin.
- Kitaplığı farklı bir sürümü kullanacak şekilde güncelleyin. Kitaplığı güncelleme başlıklı makaleyi inceleyin.
- Kitaplığı komut dosyası projenizden ve kodunuzdan kaldırın. Kitaplığı kaldırma başlıklı makaleyi inceleyin.
Gelişmiş hizmetle Google Chat API'yi çağırırken 400 hatası: invalid_scope
Error 400: invalid_scope
ile birlikte Some requested scopes cannot be shown
hata mesajıyla karşılaşırsanız Apps Script projesinin appsscript.json
dosyasında herhangi bir yetkilendirme kapsamı belirtmemişsiniz demektir. Çoğu durumda Apps Script, bir komut dosyasının ihtiyaç duyduğu kapsamları otomatik olarak belirler. Ancak Chat gelişmiş hizmetini kullandığınızda komut dosyanızın kullandığı yetkilendirme kapsamlarını Apps Script projenizin manifest dosyasına manuel olarak eklemeniz gerekir. Açık kapsamları ayarlama başlıklı makaleyi inceleyin.
Hatayı çözmek için uygun yetkilendirme kapsamlarını, oauthScopes
dizisinin bir parçası olarak Apps Komut Dosyası projesinin appsscript.json
dosyasına ekleyin. Örneğin, spaces.messages.create
yöntemini çağırmak için aşağıdakileri ekleyin:
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
Yöneticiniz, <URL> adresine yapılan UrlFetch çağrılarına izin vermiyor
Google Workspace yöneticileri, Apps Script aracılığıyla hangi harici alan adlarına erişebileceğinizi kontrol etmek için Yönetici Konsolu'nda izin verilenler listesini etkinleştirebilir.
Hatayı çözmek için yöneticinizle iletişime geçerek URL'yi izin verilenler listesine eklemesini isteyin.
Hata ayıklama
Tüm hatalar hata mesajının gösterilmesine neden olmaz. Kodun teknik olarak doğru olduğu ve çalışabildiği ancak sonuçların beklediğiniz gibi olmadığı daha ince bir hata olabilir. Bu tür durumları ele alma ve beklediğiniz şekilde çalışmayan bir komut dosyasını daha ayrıntılı şekilde incelemeyle ilgili bazı stratejiler aşağıda verilmiştir.
Günlük Kaydı
Hata ayıklama sırasında, komut dosyası projesi yürütülürken bilgileri kaydetmek genellikle yararlıdır. Google Apps Komut Dosyası'nda bilgi günlüğe kaydetme için iki yöntem vardır: Cloud günlük kaydı hizmeti ve Apps Komut Dosyası düzenleyiciye yerleşik olan daha temel Günlükleyici ve konsol hizmetleri.
Daha ayrıntılı bilgi için Günlük kaydı kılavuzuna bakın.
Error Reporting
Çalışma zamanında oluşan hatalar nedeniyle ortaya çıkan istisnalar, Google Cloud Hata Bildirimi hizmeti kullanılarak otomatik olarak kaydedilir. Bu hizmet, komut dosyası projenizin oluşturduğu istisna mesajlarını aramanıza ve filtrelemenize olanak tanır.
Error Reporting'e erişmek için Google Cloud Platform Console'da Cloud günlüklerini ve hata raporlarını görüntüleme başlıklı makaleyi inceleyin.
Yürütmeler
Apps Script, bir komut dosyasını her çalıştırdığınızda Cloud günlükleri dahil olmak üzere yürütmenin kaydını oluşturur. Bu kayıtlar, komut dosyanızın hangi işlemleri gerçekleştirdiğini anlamanıza yardımcı olabilir.
Apps Komut Dosyası projesinde senaryonuzun çalıştırma sayısını görüntülemek için soldaki Çalıştırmalar'ı
tıklayın.Apps Script hizmet durumunu kontrol etme
Nadir olmakla birlikte, bazen belirli Google Workspace hizmetlerinde (ör. Gmail veya Drive) hizmet kesintilerine neden olabilecek geçici sorunlar yaşanabilir. Bu durumda, bu hizmetlerle etkileşime geçen Apps Komut Dosyası projeleri beklendiği gibi çalışmayabilir.
Google Workspace Durum Kontrol Paneli'ni görüntüleyerek Google Workspace hizmetinde kesinti olup olmadığını kontrol edebilirsiniz. Şu anda kesinti yaşanıyorsa sorunun çözülmesini bekleyin veya Google Workspace Yardım Merkezi'nden ya da Google Workspace ile İlgili Bilinen Sorunlar dokümanlarından ek yardım alın.
Hata ayıklayıcıyı ve kesme noktalarını kullanma
Komut dosyanızdaki sorunları bulmak için hata ayıklama modunda çalıştırabilirsiniz. Hata ayıklama modunda çalıştırılan bir komut dosyası, bir kesme noktasına ulaştığında duraklar. Kesme noktası, komut dosyanızda vurguladığınız ve sorun olabileceğini düşündüğünüz bir satırdır. Bir komut dosyası duraklatıldığında, her değişkenin o andaki değerini gösterir. Böylece, çok sayıda günlük kaydı ifadesi eklemek zorunda kalmadan komut dosyasının iç işleyişini inceleyebilirsiniz.
Ayırma noktası ekleme
Bir kesme noktası eklemek için fareyle kesme noktası eklemek istediğiniz satırın satır numarasının üzerine gelin. Satır numarasının solundaki daireyi tıklayın. Aşağıdaki resimde, bir komut dosyasına eklenen bir kesme noktası örneği gösterilmektedir:
Hata ayıklama modunda komut dosyası çalıştırma
Komut dosyasını hata ayıklama modunda çalıştırmak için düzenleyicinin üst kısmındaki Hata ayıklama'yı tıklayın.
Komut dosyası, duraklatma noktasını içeren satırı çalıştırmadan önce duraklar ve hata ayıklama bilgilerini içeren bir tablo gösterir. Parametrelerin değerleri ve nesnelerde depolanan bilgiler gibi verileri incelemek için bu tabloyu kullanabilirsiniz.
Komut dosyasının nasıl çalıştığını kontrol etmek için hata ayıklayıcı panelinin üst kısmındaki "İçeri adım", "Atla" ve "Dışarı adım" düğmelerini kullanın. Bu seçenekler, komut dosyasını bir satırda bir çalıştırmanıza ve değerlerin zaman içinde nasıl değiştiğini incelemenize olanak tanır.
Birden çok Google Hesabı ile ilgili sorunlar
Aynı anda birden fazla Google Hesabı'na giriş yaptıysanız eklentilerinize ve web uygulamalarınıza erişme konusunda sorun yaşayabilirsiniz. Apps Komut Dosyası, eklentiler veya web uygulamalarında çoklu giriş ya da birden fazla Google Hesabı'na aynı anda giriş yapma desteklenmez.
Birden fazla hesaba giriş yapmış durumdayken Apps Script düzenleyiciyi açarsanız Google, devam etmek istediğiniz hesabı seçmenizi ister.
Bir web uygulaması veya eklentisi açtığınızda çoklu giriş sorunları yaşıyorsanız aşağıdaki çözümlerden birini deneyin:
- Tüm Google Hesaplarınızdan çıkış yapın ve yalnızca erişmek istediğiniz eklentinin veya web uygulamasının bulunduğu hesapta oturum açın.
- Google Chrome'da bir gizli pencere veya eşdeğer bir gizli tarama penceresi açın ve erişmek istediğiniz eklentinin veya web uygulamasının bulunduğu Google Hesabı'na giriş yapın.
Yardım alma
Yukarıda listelenen araç ve teknikleri kullanarak bir sorunun hata ayıklama işlemi, çeşitli sorunları çözebilir. Ancak karşılaştığınız ve çözmek için biraz daha yardıma ihtiyaç duyduğunuz sorunlar olabilir. Soru sorma ve hata bildirme hakkında bilgi edinmek için Destek sayfamıza göz atın.