Gösterge paneli dizüstü bilgisayardaki tarayıcıda sorunsuz açılıyor, ama aynı elektronik tablo betiği adres kullanılamıyor hatasıyla başarısız oluyor. VPN’i açıp kapatmak hiçbir şeyi değiştirmiyor, çünkü istek dizüstü bilgisayardan hiç çıkmıyor. Apps Script Google’ın altyapısında çalışır ve bağlantısını oradan kendisi açar. Bu tek gerçek tüm tasarımı belirler.

Herhangi bir şeyi değiştirmeden önce iki soruyu ayırın: isteği hangi makine gönderiyor ve alıcı hangi kimlik bilgisini kabul ediyor.

İstek asla dizüstü bilgisayarınızda başlamaz

Bir tarayıcı sekmesi dizüstü bilgisayardan, VPN bağdaştırıcısından, dahili DNS sonekinden geçerek özel alt ağa gönderir. UrlFetchApp Google’ın yönettiği bir ana bilgisayardan gönderir, böylece Google’ın çözümleyicilerini, Google’ın çıkış adreslerini görür ve split-tunnel yollarınızın hiçbirini görmez. İki yol bir elektronik tablo belgesini paylaşır, bir ağ konumunu değil. Uygulamanın erişim günlüğünde betiğin denemesi VPN havuzundan bir adres değil, bir Google adresi olarak görünür ve bu alabileceğiniz en hızlı doğrulamadır.

Bu yüzden yerel düzeltmeler hiçbir şey yapmaz. Dizüstü bilgisayarı başka bir çözümleyiciye yönlendirmek, VPN istemcisini yeniden başlatmak veya hosts dosyasına bir satır eklemek tarayıcının yolunu değiştirir ve betiğin yolunu tam olarak olduğu gibi bırakır.

Bunun dışladığı şeyler

Yalnızca dahili bir uç noktaya Apps Script’ten ulaşılamaz ve izin verilen IP listesi bu konumda erişim denetimi için zayıf bir yedektir. Google’ın çıkış aralıkları geniştir, diğer müşterilerle paylaşılır ve tek bir betiğe bağlanamaz. UrlFetchApp başvurusu isteklerin Google’ın IP havuzundan geldiğini belirtir; bu, söz konusu iddianın yetkili sürümüdür. Dahili uygulamayı bu aralıklara açmak, atfedemediğiniz trafiği içeri alır.

Tarayıcı oturumları da aynı şekilde davranır. Dizüstü bilgisayarın tarayıcısındaki bir çerez veya SSO oturumu istekle birlikte seyahat etmez; istek, oturum durumu olmayan yeni bir HTTPS istemcisidir. Tarayıcı SSO yönlendirmesine bağlı her şey sizin verilerinizde değil, o yönlendirmede sona erer.

İki uygulanabilir biçim

Birinci biçim betiğe onaylı bir API verir. Dahili hizmeti, çağıranı doğrulayan bir ağ geçidinin arkasında yayımlayın, ardından betiğin ağ geçidinin kabul ettiği bir kimlik bilgisini, örneğin bir hizmet hesabı belirtecini sunmasını sağlayın. Apps Script’te bu, bir OAuth2 kitaplığı veya ScriptApp.getOAuthToken() ve API tarafında IP listesi yerine izin verilen çağıran kimlikleri listesi anlamına gelir.

İkinci biçim yönü tersine çevirir. Dahili bir iş özel sistemi sorgular ve denetlenen sonucu betiğin okuduğu bir Sheet’e, Cloud Storage nesnesine veya BigQuery tablosuna yayımlar. Bir Cloud Run işi, yerel bir zamanlayıcı veya mevcut bir ETL adımı bu iş olabilir ve hiçbiri gelen bir bağlantıyı kabul etmek zorunda değildir. Elektronik tablo o zaman bir arayüz yerine bir veri kümesi tüketir.

Hangi biçimin kazanacağı tazeliğe, alan düzeyinde denetime ve okuyucuyu kimin denetleyebilmesi gerektiğine bağlıdır.

Yayımlanan sonuç ne içermelidir

Ters yönlü bir akış açık bir sözleşmeye ihtiyaç duyar: taşıdığı alanlar, yenileme aralığı, okuyucu grubu ve dahili iş başarısız olduğunda ne olacağı. Bu dördü olmadan elektronik tablo sessizce dünün sayılarını gösterir. Üretilen bir zaman damgası sütunu ve satır sayısı ekleyin; böylece eski veya kısmi bir yayın, kimse günlük açmadan sayfanın kendisinde görünür.

API yönü de bir sözleşmeye ihtiyaç duyar: ağ geçidinin hangi kimlik bilgisini kabul ettiği, belirtecin hangi scopes taşıdığı ve hangi çağıran kimliklerine izin verildiği. Oturum açma sayfası içeren bir 200 yanıtı başarılı bir çağrı değildir, bu yüzden yalnızca durum kodunu değil gövdeyi de kontrol edin.

Hatayı doğru taraftan okuyun

Apps Script ulaşılamayan bir ana bilgisayarı adres kullanılamıyor istisnası olarak bildirir; bu, tarayıcının bağlantı reddedildi iletisi değildir. Ağ geçidinden gelen 403, isteğin ulaştığını ve bir kimlik bilgisinin veya ilkenin reddedildiğini gösterir. HTML oturum açma sayfası, isteğin bir betiğin tamamlayamayacağı etkileşimli bir katmana ulaştığını gösterir. Üç farklı arıza, üç farklı sorumlu.

Betiğin günlüğünü tarayıcının sonucunun yanında tutun, birini diğeriyle değiştirmeyin. Kalan soru o zaman olağan bir entegrasyon kararıdır: o ortama ihtiyaç duyduğu erişimi verin veya ona denetlenen bir sonuç teslim edin.

İlgili makaleler