Sorun giderme

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. Mesajla birlikte, sorun giderme için kullanılan bir satır numarası da gösterilir. 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 dilbilgisine uymayan kod yazılmasından kaynaklanır ve bu hatalar, komut dosyasını kaydetmeye çalıştığınızda algılanır. Örneğin, aşağıdaki kod snippet'i bir söz dizimi hatası içeriyor:

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 eksik ) karakteri bulunması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 bulunur ve genellikle basit nedenleri olduğu için giderilmesi genellikle basittir. Söz dizimi hataları içeren bir dosyayı kaydedemezsiniz. Diğer bir deyişle, 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 bir çalışma zamanı hatasına neden olur:

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 giderilmesini daha zor hale getiren şey, genellikle bir işleve aktardığınız verilerin koda yazılmaması, bunun yerine bir e-tablodan, formdan veya başka bir harici veri kaynağından alınmasıdır. 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ı: <işlem adı>

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. Kotalar; tüketici, alan hesabı ve işletme sürümü hesapları için farklı düzeylerde belirlenir ve Google tarafından önceden bir duyuru yapılmaksızın 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ında çalışmak için gereken yetkilendirmenin olmadığını 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 (ör. 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:

  1. Apps Script projesinin sol tarafında Tetikleyiciler'i tıklayın.
  2. Kaldırmak istediğiniz tetikleyicinin sağı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ı

Google Workspace 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 amacıyla yayınlandıysa ve alandaki kullanıcıların bir kısmı ya da tamamı için yönetici tarafından yüklendiyse, alanda Drive API devre dışı bırakılmış olsa bile komut dosyası, söz konusu 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-posta adresinin 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, tetiklenen işlevlerde e etkinlik parametresinin authMode özelliği olarak gösterilir.

  • AuthMode.FULL'te, bunun yerine Session.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.
  • Google Workspace 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 bir bağımlılık olarak listelenmesine rağmen bu 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ın ve 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. Hata kodu Not_Found

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ümlü dağıtımı düzenleme bölümünü inceleyin.
  • 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 Diğer > 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:
    • Farklı bir sürüm kullanmak için kitaplığı güncelleyin. Kitaplığı güncelleme başlıklı makaleyi inceleyin.
    • Silinen kitaplığı komut dosyası projenizden ve kodunuzdan kaldırın. Kitaplığı kaldırma bölümünü inceleyin.
  • 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:
    • Komut dosyanızın kullandığı kitaplığa düzenleme erişiminiz varsa söz konusu komut dosyasında ikincil kitaplığı mevcut bir sürüme güncelleyin.
    • Farklı bir sürüm kullanmak için kitaplığı 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 hangi kapsamlara ihtiyaç duyduğunu 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 dizisi kapsamında Apps Script projesinin appsscript.json dosyasına ekleyin. Örneğin, spaces.messages.create yöntemini çağırmak için şunu ekleyin:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Yöneticiniz, <URL> adresine giden UrlFetch çağrılarına izin vermiyor

Google Workspace yöneticileri, Apps Komut Dosyası üzerinden hangi harici alanlara erişebileceğinizi kontrol etmek için Yönetici Konsolu'ndan 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 yürütülebileceği bir yerde daha incelikli bir hata olabilir ancak sonuçlar beklediğiniz gibi değildir. Bu tür durumları ele alma ve beklediğiniz şekilde çalışmayan bir komut dosyasını daha ayrıntılı bir şekilde incelemeyle ilgili bazı stratejiler aşağıda verilmiştir.

Günlük Kaydı

Hata ayıklama esnasında bilgilerin bir komut dosyası projesi yürütme işlemi olarak kaydedilmesi genellikle fayda sağlar. Google Apps Komut Dosyası'nda, bilgileri günlüğe kaydetmek için iki yöntem bulunur: Cloud günlük kaydı hizmeti ve Apps Komut Dosyası düzenleyicisinde yerleşik olarak bulunan daha temel Günlük Kaydı 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.

Hata Bildirimi'ne erişmek için Google Cloud Platform konsolunda Cloud günlüklerini ve hata raporlarını görüntüleme bölümüne bakın.

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.

Komut dosyanızın Apps Komut Dosyası projesindeki çalıştırmalarını görüntülemek için solda Çalıştırmalar tıklayın.

Apps Komut Dosyası hizmet durumunu kontrol etme

Nadiren de olsa bazen belirli Google Workspace hizmetlerinde (Gmail veya Drive gibi) hizmet kesintilerine yol açabilecek geçici sorunlarla karşılaşılabilir. Bu durumda, bu hizmetlerle etkileşime giren 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 dosyayı 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 anki değeri gösterilir. Böylece, çok fazla günlük ifadesi eklemek zorunda kalmadan komut dosyasının iç işleyişini inceleyebilirsiniz.

Ayırma noktası ekleme

Ayrılma noktası eklemek için fareyle, ayrılma 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, komut dosyasına eklenen bir ayrılma noktası örneği gösterilmektedir:

Ayırma noktası ekleme

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ında Hata ayıkla'yı tıklayın.

Komut dosyası, duraklatma noktasının bulunduğu 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 çalışma şeklini kontrol etmek için Hata Ayıklayıcı panelinin üst kısmındaki "Adımları uygulayın", "Adımları uygulayın" ve "Adımları al" düğmelerini kullanın. Bunlar, komut dosyasını her seferinde bir satır ç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ş veya aynı anda birden fazla Google Hesabı'na 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ını veya eklentiyi açtığınızda çoklu giriş sorunlarıyla karşılaşırsanı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 sorunda hata ayıklama işlemi gerçekleştirmek ç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.