La panelo malfermiĝas bone en la retumilo sur la tekkomputilo, sed la sama kalkultabela skripto malsukcesas per eraro pri neatingebla adreso. Ŝalti aŭ malŝalti la VPN-on tute ne ŝanĝas ion, ĉar la peto tute ne forlasas la tekkomputilon. Apps Script plenumiĝas sur la infrastrukturo de Google kaj malfermas sian propran konekton el tie. Tiu unu fakto decidas la tutan dezajnon.

Apartigu du demandojn antaŭ ol ŝanĝi ion ajn: kiu maŝino sendas la peton, kaj kiun legitimaĵon akceptas la ricevanto.

La peto neniam komenciĝas sur via tekkomputilo

Retumila langeto sendas de la tekkomputilo, tra la VPN-adaptilo, la interna DNS-sufikso kaj en la privatan subreton. UrlFetchApp sendas de gastigo administrata de Google, do ĝi vidas la solvantojn de Google, la elirajn adresojn de Google kaj neniun el viaj split-tunnel-itineron. La du vojoj kunhavas kalkultabelan dokumenton, ne retan lokon. En la alirprotokolo de la aplikaĵo, la provo de la skripto aperas kiel Google-adreso anstataŭ kiel adreso el la VPN-baseno, kaj tio estas la plej rapida konfirmo, kiun vi ricevos.

Tial lokaj riparoj faras nenion. Montri la tekkomputilon al alia solvanto, rekomenci la VPN-klienton aŭ aldoni eron en hosts ŝanĝas la vojon de la retumilo kaj lasas la vojon de la skripto precize tia, kia ĝi estis.

Kion tio ekskludas

Nur-interna finpunkto neatingeblas el Apps Script, kaj la IP-permeslisto estas malforta anstataŭaĵo por alirkontrolo en tiu pozicio. La eliraj gamoj de Google estas larĝaj, kunhavataj kun aliaj klientoj kaj neeble ligeblaj al unu skripto. La UrlFetchApp-referenco diras, ke petoj originas el la IP-baseno de Google, kio estas la aŭtoritata versio de tiu aserto. Malfermi la internan aplikaĵon al tiuj gamoj enlasas trafikon, kiun vi ne povas atribui.

Retumilaj sesioj kondutas same. Kuketo aŭ SSO-sesio en la retumilo de la tekkomputilo ne vojaĝas kun la peto, kiu estas freŝa HTTPS-kliento sen sesia stato. Ĉio, kio dependas de SSO-alidirektado en la retumilo, finiĝas ĉe tiu alidirektado anstataŭ ĉe viaj datumoj.

Du fareblaj formoj

La unua formo donas al la skripto aprobitan API. Publikigu la internan servon malantaŭ pordego, kiu aŭtentikigas la alvokanton, poste igi la skripton prezenti legitimaĵon, kiun la pordego akceptas, ekzemple servokontan ĵetonon. En Apps Script tio signifas OAuth2-bibliotekon aŭ ScriptApp.getOAuthToken(), plus permesliston de alvokantaj identoj ĉe la API-flanko anstataŭ IP-permeslisto.

La dua formo inversigas la direkton. Interna tasko pridemandas la privatan sistemon kaj publikigas kontrolitan rezulton en Sheet, objekton de Cloud Storage aŭ tabelon de BigQuery, kiun la skripto legas. Cloud Run-tasko, loka planilo aŭ ekzistanta ETL-paŝo povas ĉiuj esti tiu tasko, kaj neniu el ili devas akcepti envenantan konekton. La kalkultabelo tiam konsumas datenaron anstataŭ interfacon.

Kiu formo venkas dependas de freŝeco, regado je kampa nivelo kaj de tio, kiu devas povi revizii la leganton.

Kion la publikigita rezulto devas enhavi

Inversdirekta fluo bezonas eksplicitan kontrakton: la kampojn, kiujn ĝi portas, la refreŝigan intervalon, la legantogrupon kaj tion, kio okazas, kiam la interna tasko malsukcesas. Sen tiuj kvar, la kalkultabelo kviete montras la hieraŭajn nombrojn. Aldonu generitan tempstampan kolumnon kaj vicokalkulon, por ke eksdata aŭ parta publikigo estu videbla en la kalkultabelo mem, sen ke iu malfermu protokolon.

La API-direkto ankaŭ bezonas kontrakton: kiun legitimaĵon la pordego akceptas, kiujn scope-jn la ĵetono portas kaj kiuj alvokantaj identoj estas permesitaj. Respondo 200, kiu enhavas ensalutan paĝon, ne estas sukcesa alvoko, do kontrolu la korpon kaj ne nur la statusan kodon.

Legu la eraron de la ĝusta flanko

Apps Script raportas neatingeblan gastiganton kiel escepton pri neatingebla adreso, kio ne estas la mesaĝo de la retumilo pri rifuzita konekto. 403 de la pordego signifas, ke la peto alvenis kaj ke legitimaĵo aŭ politiko estis rifuzitaj. HTML-ensaluta paĝo signifas, ke la peto atingis interagan tavolon, kiun skripto ne povas fini. Tri malsamaj fiaskoj kun tri malsamaj posedantoj.

Tenu la protokolon de la skripto apud la rezulto de la retumilo anstataŭ anstataŭigi unu per la alia. La restanta demando tiam estas ordinara integra decido: donu al tiu medio la aliron, kiun ĝi bezonas, aŭ liveru al ĝi kontrolitan rezulton.

Rilataj artikoloj