Sorun giderme

En deneyimli geliştirici bile ilk denemede kodu nadiren doğru yazar. Bu da sorun gidermenin geliştirme sürecinin önemli bir parçası olduğunu gösterir. Bu bölümde, komut dosyalarınızdaki hataları bulmanıza, anlamanıza ve bunlarda hata ayıklamanıza yardımcı olabilecek bazı teknikleri ele alacağız.

Hata mesajları

Komut dosyanız bir hatayla karşılaştığında bir 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:

Bağımsız değişken listesinden sonra ) yok. (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çimlendirildi, 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ılırken aşağıdaki hata verilir:

Geçersiz e-posta: can (5. satır)

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 kullanmak, bu hataların nedenini belirlemenize yardımcı olabilir.

Yaygın görülen hatalar

Aşağıda, sık karşılaşılan hatalar ve nedenleri listelenmiştir.

Hizmet çok fazla kez başlatı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ün içinde ç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. Apps Komut Dosyası kota belgelerinde çeşitli işlemlerin kota sınırlarını inceleyebilirsiniz.

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, buna karşılık gelen bir hata mesajı bulunmayan bir hata bulunuyor. Komut dosyanızda hata ayıklamayı deneyin ve sorunu tespit edip edemeyeceğinize bakın.
  • Google Apps Komut Dosyası'ndaki bir hata bu hataya neden oluyor. Hata raporlarını arama ve doldurmayla ilgili talimatlar için Bugs (Hatalar) bölümüne bakın. Yeni bir hata bildirmeden önce, başkalarının daha önce bildirip bildirmediğini arayı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üzenleyicisi'nde veya özel menü öğesinden çalıştırıldığında, kullanıcıya yetkilendirme iletişim kutusu gösterilir. Ancak bir komut dosyası tetikleyiciden çalıştırıldığında, Google Sites sayfasına yerleştirilmişse veya hizmet olarak çalıştırıldığında iletişim kutusu sunulamaz ve bu hata gösterilir.

Komut dosyasını yetkilendirmek için Komut Dosyası Düzenleyicisi'ni açın ve herhangi bir işlevi çalıştırın. Komut dosyası projesini yetkilendirebilmeniz için yetkilendirme istemi görünür. Komut dosyası yetkisiz yeni hizmetler içeriyorsa komut dosyasını yeniden yetkilendirmeniz gerekir.

Bu hata, genellikle kullanıcı yetkilendirmeden önce etkinleşen tetikleyicilerden kaynaklanır. Komut dosyası projesine erişiminiz yoksa (ör. hata, kullandığınız bir eklenti için oluştuğu için) genellikle eklentiyi yeniden kullanarak komut dosyasını yetkilendirebilirsiniz. Bir tetikleyici etkinleşmeye devam ederse ve bu hataya neden olursa aşağıdakileri yaparak tetikleyicilerinizi kaldırabilirsiniz:

  1. Apps Komut Dosyası projesinin solundaki 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 Alan politikası, üçüncü taraf Drive uygulamalarını devre dışı bıraktı

Google Workspace Alanlarının yöneticileri, alanları için Drive API'yi devre dışı bırakabilirler. Bu durumda kullanıcılar, Google Drive uygulamalarını yükleyip kullanamaz. Bu ayar, kullanıcıların Drive hizmetini veya Gelişmiş Drive Hizmeti'ni kullanan Apps Komut Dosyası eklentilerini kullanmasını da engeller (komut dosyası, 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-postasının komut dosyası tarafından kullanılamayacağını belirtir. Bu uyarı, Session.getActiveUser() için yapılan bir çağrıdan kaynaklanır. Komut dosyası AuthMode.FULL dışında bir yetkilendirme modunda çalışıyorsa Session.getEffectiveUser() çağrısından da kaynaklanabilir. Bu uyarının sinyali varsa 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 çeşitli yolları 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'da, sahibinin komut dosyasını yetkilendirdiğinden emin olun.
  • Diğer yetkilendirme modlarında iki yöntemi de çağırmaktan kaçının.
  • Google Workspace Yüklenebilir tetikleyiciden bu uyarıyı kısa süre önce yaşayan 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 hatadan kaçınmak 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ığa 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ık 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 bir 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 bölümüne göz atın.
    • Silinen kitaplığı komut dosyası projenizden ve kodunuzdan kaldırın. Kitaplığı kaldırma bölümünü inceleyin.
  • Komut dosyanızın kullandığı bir kitaplığın komut dosyası, silinmiş bir sürümü kullanan başka bir kitaplık içerir. Aşağıdaki işlemlerden birini yapın:
    • Komut dosyanızın kullandığı kitaplığa düzenleme erişiminiz varsa bu komut dosyasındaki ikincil kitaplığı mevcut bir sürümle güncelleyin.
    • Farklı bir sürüm kullanmak için kitaplığı güncelleyin. Kitaplığı güncelleme bölümüne göz atın.
    • Kitaplığı, komut dosyası projenizden ve kodunuzdan kaldırın. Kitaplığı kaldırma bölümünü inceleyin.

Google Chat API'yi gelişmiş hizmetle çağırırken Error 400: invalid_scope

Some requested scopes cannot be shown hata mesajıyla birlikte Error 400: invalid_scope ile karşılaşıyorsanız Apps Komut Dosyası projesinin appsscript.json dosyasında herhangi bir yetkilendirme kapsamı belirtmemişsiniz demektir. Çoğu durumda Apps Komut Dosyası, bir komut dosyasının hangi kapsamlara ihtiyacı olduğunu otomatik olarak belirler. Ancak Chat'in gelişmiş hizmetini kullandığınızda, komut dosyanızın kullandığı yetkilendirme kapsamlarını Apps Komut Dosyası projenizin manifest dosyasına manuel olarak eklemeniz gerekir. Açık kapsamlar ayarlama bölümüne bakın.

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 şunu ekleyin:

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

Hata ayıklama

Tüm hatalar hata mesajı 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. Burada, bu tür durumları ele almak ve beklediğiniz gibi çalışmayan bir komut dosyasını incelemek için yararlanabileceğiniz bazı stratejileri bulabilirsiniz.

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 fazla ayrıntı için Günlük kaydı kılavuzunu inceleyin.

Error Reporting

Çalışma zamanı 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ızı ve filtrelemenizi sağlar.

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

Her komut dosyası çalıştırdığınızda Apps Komut Dosyası, Cloud günlükleri de dahil olmak üzere yürütme işleminin bir kaydını tutar. Bu kayıtlar, komut dosyanızın hangi işlemleri gerçekleştirdiğini anlamanıza yardımcı olabilir.

Apps Komut Dosyası projesinde komut dosyanızın yürütme işlemlerini görüntülemek için sol taraftaki Yürütmeler seçeneğini 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 hizmet kesintisi olup olmadığını kontrol edebilirsiniz. Şu anda bir kesinti yaşanıyorsa sorunun çözülmesini bekleyebilir veya Google Workspace Yardım Merkezi ya da Google Workspace Bilinen Sorunlar belgelerinden daha fazla yardım alabilirsiniz.

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ıldığında, komut dosyası bir ayrılma noktasına ulaştığında durur. Nokta, 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.

Ayrılma noktası ekle

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:

Ayrılma noktası ekle

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ı, ayrılma noktasının bulunduğu satırı çalıştırmadan önce duraklar ve hata ayıklama bilgilerinin yer aldığı bir tablo görüntüler. 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ım adım ilerleyin" 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şmede 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ışken Apps Komut Dosyası düzenleyicisini 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 hesaba giriş yapı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 sorundaki hataları ayıklamak, çok sayıda sorunu çözebilir. Ancak karşılaştığınız bazı sorunların çözümü için daha fazla yardım gerekebilir. Soru soracağınız ve hataları bildireceğiniz yer hakkında bilgi edinmek için Destek sayfamıza bakın.