Skydelis puikiai atsidaro nešiojamojo kompiuterio naršyklėje, bet tas pats skaičiuoklės scenarijus nepavyksta su neprieinamo adreso klaida. VPN įjungimas ar išjungimas nieko nekeičia, nes užklausa apskritai nepalieka nešiojamojo kompiuterio. Apps Script vykdoma Google infrastruktūroje ir iš ten atidaro savo ryšį. Šis vienas faktas lemia visą dizainą.

Atskirkite du klausimus prieš ką nors keisdami: kuri mašina siunčia užklausą ir kokius prisijungimo duomenis priima gavėjas.

Užklausa niekada neprasideda jūsų nešiojamajame kompiuteryje

Naršyklės skirtukas siunčia iš nešiojamojo kompiuterio, per VPN adapterį, vidinį DNS priesagą ir į privatų potinklį. UrlFetchApp siunčia iš Google valdomo serverio, todėl ji mato Google sprendėjus, Google išėjimo adresus ir nė vieno jūsų split-tunnel maršruto. Du keliai dalijasi skaičiuoklės dokumentu, o ne tinklo vieta. Programos prieigos žurnale scenarijaus bandymas rodomas kaip Google adresas, o ne kaip VPN telkinio adresas, ir tai greičiausias patvirtinimas, kurį gausite.

Todėl vietinės pataisos nieko nepadaro. Nukreipus nešiojamąjį kompiuterį į kitą sprendėją, iš naujo paleidus VPN klientą ar pridėjus įrašą į hosts, pasikeičia naršyklės kelias, o scenarijaus kelias lieka toks, koks buvo.

Ką tai pašalina

Tik vidinio galinio taško iš Apps Script pasiekti negalima, o leidžiamų IP sąrašas šioje vietoje yra silpnas prieigos kontrolės pakaitalas. Google išėjimo diapazonai yra platūs, bendrinami su kitais klientais ir jų neįmanoma susieti su vienu scenarijumi. UrlFetchApp nuoroda nurodo, kad užklausos kyla iš Google IP telkinio, ir tai yra autoritetinga to teiginio versija. Atvėrus vidinę programą šiems diapazonams, įleidžiamas srautas, kurio negalite priskirti.

Naršyklės sesijos elgiasi taip pat. Slapukas ar SSO sesija nešiojamojo kompiuterio naršyklėje nekeliauja su užklausa, kuri yra naujas HTTPS klientas be sesijos būsenos. Viskas, kas priklauso nuo naršyklės SSO peradresavimo, baigiasi tame peradresavime, o ne jūsų duomenyse.

Dvi įgyvendinamos formos

Pirmoji forma suteikia scenarijui patvirtintą API. Paskelbkite vidinę paslaugą už šliuzo, kuris autentifikuoja kvietėją, o tada scenarijus pateikia šliuzo priimamus prisijungimo duomenis, pavyzdžiui, paslaugos paskyros žetoną. Apps Script tai reiškia OAuth2 biblioteką arba ScriptApp.getOAuthToken(), taip pat leidžiamų kvietėjo tapatybių sąrašą API pusėje vietoje IP sąrašo.

Antroji forma apverčia kryptį. Vidinė užduotis užklausia privačios sistemos ir paskelbia kontroliuojamą rezultatą į Sheet, Cloud Storage objektą ar BigQuery lentelę, kurią scenarijus skaito. Cloud Run užduotis, vietinis planuotojas ar esamas ETL žingsnis gali būti ta užduotis, ir nė vienai iš jų nereikia priimti gaunamo ryšio. Tada skaičiuoklė vartoja duomenų rinkinį, o ne sąsają.

Kuri forma laimės, priklauso nuo šviežumo, lauko lygmens kontrolės ir nuo to, kas turi galėti audituoti skaitytoją.

Ką turi turėti paskelbtas rezultatas

Atvirkštinės krypties srautui reikia aiškios sutarties: laukų, kuriuos jis neša, atnaujinimo intervalo, skaitytojų grupės ir to, kas nutinka, kai vidinė užduotis nepavyksta. Be šių keturių skaičiuoklė tyliai rodo vakarykščius skaičius. Pridėkite sugeneruotą laiko žymos stulpelį ir eilučių skaičių, kad pasenęs ar dalinis paskelbimas būtų matomas pačioje lentelėje, niekam neatidarius žurnalo.

API krypčiai taip pat reikia sutarties: kokius prisijungimo duomenis priima šliuzas, kokius scopes neša žetonas ir kurios kvietėjo tapatybės leidžiamos. 200 atsakymas su prisijungimo puslapiu nėra sėkmingas kvietimas, todėl tikrinkite turinį, o ne vien būsenos kodą.

Skaitykite klaidą iš teisingos pusės

Apps Script neprieinamą serverį praneša kaip neprieinamo adreso išimtį, kuri nėra naršyklės pranešimas apie atmestą ryšį. 403 nuo šliuzo reiškia, kad užklausa atėjo ir prisijungimo duomenys ar politika buvo atmesti. HTML prisijungimo puslapis reiškia, kad užklausa pasiekė interaktyvų sluoksnį, kurio scenarijus negali užbaigti. Trys skirtingos nesėkmės su trimis skirtingais atsakingaisiais.

Laikykite scenarijaus žurnalą šalia naršyklės rezultato, o ne pakeiskite vieną kitu. Tada likęs klausimas yra įprastas integracijos sprendimas: duoti tai aplinkai reikalingą prieigą arba pateikti jai kontroliuojamą rezultatą.

Susiję straipsniai