İdarəetmə paneli notbukdakı brauzerdə yaxşı açılır, lakin eyni cədvəl skripti ünvanın əlçatmaz olması xətası ilə uğursuz olur. VPN-i yandırıb-söndürmək heç nəyi dəyişmir, çünki sorğu notbukdan ümumiyyətlə çıxmır. Apps Script Google-un infrastrukturunda icra olunur və öz bağlantısını oradan açır. Bu tək fakt bütün dizaynı müəyyən edir.

Hər hansı dəyişiklik etməzdən əvvəl iki sualı ayırın: sorğunu hansı maşın göndərir və qəbul edən hansı etimadnaməni qəbul edir.

Sorğu heç vaxt notbukunuzda başlamır

Brauzer vərəqi notbukdan, VPN adapterindən, daxili DNS şəbəkə uzantısından keçərək şəxsi alt şəbəkəyə göndərir. UrlFetchApp Google-un idarə etdiyi hostdan göndərir, buna görə Google-un həlledicilərini, Google-un çıxış ünvanlarını görür və sizin split-tunnel marşrutlarınızın heç birini görmür. İki yol cədvəl sənədini paylaşır, şəbəkə məkanını deyil. Tətbiqin giriş jurnalında skriptin cəhdi VPN hovuzundan olan ünvan kimi deyil, Google ünvanı kimi görünür və bu, ala biləcəyiniz ən sürətli təsdiqdir.

Buna görə yerli düzəlişlər heç nə etmir. Notbuku başqa həllediciyə yönəltmək, VPN müştərisini yenidən başlatmaq və ya hosts qeydi əlavə etmək brauzerin yolunu dəyişir və skriptin yolunu olduğu kimi saxlayır.

Bunun istisna etdiyi şeylər

Yalnız daxili olan son nöqtə Apps Script-dən əlçatmazdır və IP icazə siyahısı bu mövqedə giriş nəzarəti üçün zəif əvəzləyicidir. Google-un çıxış aralıqları genişdir, digər müştərilərlə paylaşılır və bir skriptə bağlana bilməz. UrlFetchApp istinadı sorğuların Google-un IP hovuzundan gəldiyini bildirir və bu, həmin iddianın səlahiyyətli versiyasıdır. Daxili tətbiqi həmin aralıqlara açmaq, aid edə bilmədiyiniz trafiki qəbul etməkdir.

Brauzer sessiyaları eyni cür davranır. Notbukun brauzerindəki cookie və ya SSO sessiyası sorğu ilə birlikdə getmir, çünki sorğu sessiya vəziyyəti olmayan təzə HTTPS müştərisidir. Brauzer SSO yönləndirməsindən asılı olan hər şey sizin məlumatınızda deyil, həmin yönləndirmədə bitir.

İki işlək forma

Birinci forma skriptə təsdiqlənmiş API verir. Daxili xidməti çağıranı autentifikasiya edən şlüzün arxasında yerləşdirin, sonra skriptə şlüzün qəbul etdiyi etimadnaməni, məsələn xidmət hesabı tokenini təqdim etdirin. Apps Script-də bu, OAuth2 kitabxanası və ya ScriptApp.getOAuthToken() deməkdir, üstəlik API tərəfində IP siyahısı əvəzinə çağıran şəxsiyyət icazə siyahısı.

İkinci forma istiqaməti tərsinə çevirir. Daxili tapşırıq şəxsi sistemi sorğulayır və nəzarət edilən nəticəni skriptin oxuduğu Sheet-ə, Cloud Storage obyektinə və ya BigQuery cədvəlinə dərc edir. Cloud Run tapşırığı, yerli planlaşdırıcı və ya mövcud ETL addımı bu tapşırıq ola bilər və heç biri gələn bağlantını qəbul etməməlidir. Sonra cədvəl interfeys əvəzinə verilənlər dəstini istehlak edir.

Hansı formanın qalib gəlməsi məlumatın təzəliyindən, sahə səviyyəsində nəzarətdən və oxuyucunu kimin audit edə bilməli olduğundan asılıdır.

Dərc edilən nəticənin nəyi ehtiva etməsi lazımdır

Əks istiqamətli axın açıq müqavilə tələb edir: daşıdığı sahələr, yeniləmə intervalı, oxuyucu qrupu və daxili tapşırıq uğursuz olduqda nə baş verir. Bu dördü olmadan cədvəl səssizcə dünənki rəqəmləri göstərir. Yaradılmış zaman damğası sütunu və sətir sayı əlavə edin ki, köhnəlmiş və ya qismən dərc cədvəlin özündə görünsün, heç kim jurnal açmasın.

API istiqaməti də müqavilə tələb edir: şlüz hansı etimadnaməni qəbul edir, token hansı scopes daşıyır və hansı çağıran şəxsiyyətlərə icazə verilir. Giriş səhifəsi olan 200 cavabı uğurlu çağırış deyil, buna görə yalnız status koduna deyil, cavabın gövdəsinə baxın.

Xətanı düzgün tərəfdən oxuyun

Apps Script əlçatmaz hostu ünvanın əlçatmazlığı istisnası kimi bildirir və bu, brauzerin bağlantıdan imtina mesajı deyil. Şlüzdən gələn 403 sorğunun çatdığını və etimadnamə və ya siyasətin rədd edildiyini bildirir. HTML giriş səhifəsi sorğunun skriptin tamamlaya bilmədiyi interaktiv qatına çatdığını bildirir. Üç fərqli sahibi olan üç fərqli uğursuzluq.

Skriptin jurnalını brauzerin nəticəsinin yanında saxlayın, birini digəri ilə əvəz etməyin. Qalan sual sonra adi inteqrasiya qərarıdır: o mühitə lazım olan girişi verin və ya ona nəzarət edilən nəticə çatdırın.

Əlaqəli məqalələr