Sorun giderme

En deneyimli geliştiriciler bile kodu ilk denemede nadiren doğru yazar. Bu nedenle sorun giderme, geliştirme sürecinin önemli bir parçasıdır. Bu bölümde, komut dosyalarınızdaki hataları bulma, anlama ve hatalarını ayıklama teknikleri ele alınmaktadır.

Hata mesajları

Komut dosyanızda bir hatayla karşılaşıldığında satır numarası içeren bir hata mesajı gösterilir. İki temel hata türü vardır: Söz dizimi hataları ve çalışma zamanı hataları.

Söz dizimi hataları

Söz dizimi hataları, kod JavaScript dil bilgisine uymadığında oluşur ve komut dosyası kaydedildiğinde algılanır. Örneğin, aşağıdaki snippet'te söz dizimi hatası var:

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);
}

Sorun, 4. satırın sonundaki ) karakterinin eksik olmasıdır. Komut dosyasını kaydettiğinizde aşağıdaki hata gösterilir:

Bağımsız değişken listesinden sonra ) eksik. (4. satır)

Bu hatalar anında tespit edildiğinden sorun giderme işlemi kolayca yapılabilir. Yalnızca geçerli kod projenize kaydedilir.

Çalışma zamanı hataları

Çalışma zamanı hataları, bir işlev veya sınıf yanlış kullanıldığında ortaya çıkar ve komut dosyası çalıştırıldığında algılanır. Örneğin, aşağıdaki kod ç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 biçimlendirilmiş olsa da "john" geçersiz bir e-posta adresidir. Aşağıdaki hata oluşuyor:

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

Veriler genellikle e-tablolar veya formlar gibi harici kaynaklardan çekildiğinden bu hataları düzeltmek zordur. Nedeni belirlemek için hata ayıklama tekniklerini kullanın.

Sık karşılaşılan hatalar

Sık karşılaşılan hataların ve nedenlerinin listesini aşağıda bulabilirsiniz.

Hizmet çok kez başlatıldı: <action name>

Bu hata, çok fazla e-posta gönderme gibi bir işlem için günlük kotanızı aştığınızı gösterir. Kotalar hesap türüne göre değişir ve değişikliğe tabidir. Sınırları Apps Komut Dosyası kota belgelerinde görüntüleyin.

Sunucu kullanılamıyor. veya Sunucu hatası oluştu, lütfen tekrar deneyin.

Olası nedenler şunlardır:

  • Bir Google sunucusu geçici olarak kullanılamadığında Bekleyip tekrar deneyin.
  • Komut dosyanızdaki bir hatayla ilgili mesaj yok. Sorunu belirlemek için hata ayıklamayı deneyin.
  • Google Apps Komut Dosyası'nda bir hata var. Hatalar'da hata raporlarını arama ve gönderme

Bu işlemi gerçekleştirmek için yetkilendirme gerekiyor.

Komut dosyasının çalıştırılması için gereken yetkilendirme yok. Bir komut dosyası tetikleyiciden veya hizmet olarak çalıştırıldığında yetkilendirme iletişim kutusu gösterilemez.

Komut dosyasını yetkilendirmek için komut dosyası düzenleyiciyi açıp herhangi bir işlevi çalıştırın. Komut dosyası yeni yetkisiz hizmetler kullanıyorsa komut dosyasını yeniden yetkilendirmeniz gerekir.

Yetkilendirmeden önce veya geçerlilik süresi dolduktan sonra tetiklenen tetikleyiciler genellikle bu hataya neden olur. Bu soruna bir eklenti neden oluyorsa yeniden yetkilendirmek için eklentiyi tekrar kullanın. Sorunlu tetikleyicileri kaldırma:

  1. Apps Komut Dosyası projesinde Tetikleyiciler'i tıklayın.
  2. Tetikleyicinin yanında Diğer > Tetikleyiciyi sil'i tıklayın.

Alternatif olarak, eklentinin yüklemesini kaldırabilirsiniz.

Ayrıntılı izinler de bu hatalara neden olabilir. Tetikleyici yürütmelerini korumak için yetkilendirme kapsamları sayfasını inceleyin.

Erişim reddedildi: DriveApp veya Alan politikası, üçüncü taraf Drive uygulamalarını devre dışı bıraktı

Google Workspace yöneticileri, alanları için Drive API'yi devre dışı bırakabilir. Bu durumda kullanıcılar, Drive hizmetini kullanan Drive uygulamalarını veya Apps Komut Dosyası eklentilerini kullanamaz.

Alan genelinde yükleme için yayınlanan ve bir yönetici tarafından yüklenen eklentilerde veya web uygulamalarında, Drive API devre dışı bırakılsa bile komut dosyası işlevleri çalışır.

Komut dosyasının, etkin kullanıcının kimliğini alma izni yok.

Etkin kullanıcının kimliği ve e-posta adresi kullanılamıyor. Bu durum, Session.getActiveUser() veya Session.getEffectiveUser() için AuthMode.FULL dışındaki yetkilendirme modlarında yapılan çağrılardan kaynaklanır. Komut dosyanız bir tetikleyici üzerinde çalışıyorsa yetkilendirme modunu Apps Komut Dosyası etkinlik nesnesinin authMode özelliğinde bulabilirsiniz.

Yetkilendirme moduna göre sorunu giderin:

  • AuthMode.FULL içinde bunun yerine Session.getEffectiveUser() kullanabilirsiniz.
  • AuthMode.LIMITED'da, sahibin komut dosyasını yetkilendirdiğinden emin olun.
  • Diğer yetkilendirme modlarında bu yöntemlerden birini çağırmaktan kaçının.
  • Bu uyarıyı yeni almaya başlayan bir Google Workspace müşterisiyseniz yüklenebilir tetikleyicinin kuruluşunuzdaki bir kullanıcı olarak çalıştığından emin olun.

Kitaplık eksik

Çok fazla kişi aynı anda erişirse kitaplık eksik olarak bildirilebilir. Bu sorunu çözmek için:

  • Kitaplığın kodunu doğrudan komut dosyanıza kopyalayın.
  • Kitaplığı kendi hesabınızdan kopyalayıp dağıtın.
  • Kitaplığın komut dosyanızın çalışması için gerekli olmadığını düşünüyorsanız kitaplığı komut dosyası projenizden kaldırın.

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:

  • Bir dağıtım tarafından kullanılan komut dosyası sürümü silindi. Bu sorunu çözmek için dağıtımı düzenleyin ve farklı bir komut dosyası sürümü seçin.
  • Komut dosyası tarafından kullanılan bir kitaplık sürümü silindi. Bu sorunu çözmek için komut dosyası düzenleyicide "Kitaplıklar" bölümünde kitaplığı bulun ve farklı bir sürüme güncelleyin veya kitaplığı kaldırın. Güncellemek için sürüm numarasını tıklayın ve farklı bir sürüm seçin. Kaldırmak için Diğer > Kaldır'ı tıklayın.
  • Bir kitaplık başka bir kitaplığı içeriyor ve bu kitaplığın sürümü silindi. Bu sorunu çözmek için kitaplığın yazarıyla iletişime geçin veya komut dosyanızın kullandığı kitaplığın farklı bir sürümünü kullanın.

Gelişmiş hizmetle Google Chat API çağrılırken 400 kodlu "invalid_scope" hatası

Error 400: invalid_scope hata mesajıyla karşılaşırsanız Some requested scopes cannot be shown, 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 kapsamları gerektirdiğini otomatik olarak belirler. Ancak Chat 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 başlıklı makaleyi inceleyin.

Hatayı düzeltmek için Apps Komut Dosyası projesinin appsscript.json dosyasına oauthScopes dizisinin bir parçası olarak uygun yetkilendirme kapsamlarını 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, harici alan erişimini kontrol etmek için izin verilenler listesini kullanabilir. URL'yi izin verilenler listesine eklemek için yöneticinizle iletişime geçin.

Hata ayıklama

Bazı hatalar küçük olduğu için mesaj tetiklemez. Örneğin, kodunuz yürütülebilir ancak sonuçlar beklenmedik olabilir. Beklenmedik şekilde davranan komut dosyalarını incelemek için aşağıdaki stratejileri kullanın.

Günlük Kaydı

Cloud Logging hizmetini veya komut dosyası düzenleyicisindeki Logger ve Console hizmetlerini kullanarak komut dosyası yürütülürken bilgileri kaydedin.

Error Reporting

Google Cloud'da Error Reporting'i kullanmak için varsayılan proje yerine standart, kullanıcı tarafından yönetilen bir proje kullanın.

Standart bir proje kullandığınızda çalışma zamanı hataları Google Cloud Error Reporting'e otomatik olarak kaydedilir. Google Cloud Console'da Cloud günlüklerini ve hata raporlarını görüntüleyin.

Yürütmeler

Google Apps Komut Dosyası, Cloud günlükleri de dahil olmak üzere her yürütmeyi kaydeder. Yürütme işlemlerini görüntülemek için Yürütme işlemleri'ni tıklayın.

Hizmet durumu kontrol ediliyor

Google Workspace Durum Kontrol Paneli'nde Google Workspace hizmet kesintisi olup olmadığını kontrol edin.

Hata ayıklayıcıyı ve kesme noktalarını kullanma

Komut dosyanızdaki sorunları bulmak için hata ayıklama modunda uygulayabilirsiniz. Hata ayıklama modunda çalıştırıldığında bir komut dosyası, kesme noktasına ulaştığında duraklatılır. 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ğeri gösterilir. Böylece, çok sayıda günlük ifadesi eklemenize gerek kalmadan bir komut dosyasının iç işleyişini inceleyebilirsiniz.

Ayrılma noktası ekleme

Kesme noktası eklemek için 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 kesme noktası örneği gösterilmektedir:

Ayrılma 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ındaki Hata ayıklama'yı tıklayın.

Komut dosyası, kesme noktası içeren satırı çalıştırmadan önce duraklatılır ve hata ayıklama bilgilerinin bulunduğu bir tablo gösterilir. Bu tabloyu, parametrelerin değerleri ve nesnelerde depolanan bilgiler gibi verileri incelemek için kullanabilirsiniz.

Komut dosyasının nasıl çalıştırılacağını kontrol etmek için hata ayıklayıcı panelinin üst kısmındaki "Adım içine", "Adım üzerinden" ve "Adım dışına" düğmelerini kullanın. Bu araçlar, komut dosyasını her seferinde bir satır çalıştırıp değerlerin zaman içinde nasıl değiştiğini incelemenize olanak tanır.

Hata: Geçerli satırın kaynak kodu kullanılamıyor

Geçerli satırın kaynak kodu kullanılamıyor

Bu hata, etkin bir hata ayıklama dosyası olmadığında gösterilir. Google Apps Komut Dosyası, eval() ve new Function() kullanılarak oluşturulanlar gibi, komut dosyası düzenleyicide dinamik olarak oluşturulan JavaScript (JS) komut dosyalarının görüntülenmesini desteklemez. Bu komut dosyaları V8 motorunda oluşturulur ve yürütülür ancak düzenleyicide bağımsız dosyalar olarak gösterilmez. Bu komut dosyalarına adım adım girerseniz bu hatayla karşılaşırsınız.

Örneğin, aşağıdaki kodu ele alalım:

function myFunction() {
  eval('a=2');
}

eval() çağrıldığında bağımsız değişkeni JS kodu olarak değerlendirilir ve V8 motorunda dinamik olarak oluşturulmuş bir komut dosyası olarak çalıştırılır. eval()'ya adım adım girerseniz bu hata gösterilir. Komut dosyasında //# sourceURL yorumu varsa adı, çağrı yığınında gösterilir. Aksi takdirde, adsız bir giriş olarak görünür.

Hata mesajına rağmen hata ayıklama oturumu etkin kalır ve yürütme devam edebilir. Devam etmek için adım adım ilerleme, adım adım gerileme veya yürütmeye devam etme adımlarını uygulayın. Ancak yürütme, dinamik komut dosyası kapsamında kaldığı sürece bu hata görünmeye devam eder. Yürütme, dinamik komut dosyasından çıktıktan sonra hata ayıklama bu hata olmadan devam eder.

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şirken 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 hesapta oturum açmışken Apps Komut Dosyası Düzenleyicisi'ni açarsanız, Google, devam etmek istediğiniz hesabı seçmenizi ister.

  • Bir web uygulaması veya eklenti 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ı'nda oturum açın.

Yardım alma

Soru sormak veya hataları bildirmek için destek sayfamızı ziyaret edin.