Informācijas panelis klēpjdatora pārlūkā atveras labi, bet tā pati izklājlapas skripta daļa neizdodas ar kļūdu par nepieejamu adresi. VPN ieslēgšana vai izslēgšana neko nemaina, jo pieprasījums klēpjdatoru nemaz nepamet. Apps Script darbojas Google infrastruktūrā un no turienes atver savu savienojumu. Šis viens fakts nosaka visu dizainu.

Atdaliet divus jautājumus pirms kaut ko mainīt: kura mašīna sūta pieprasījumu un kādus akreditācijas datus saņēmējs pieņem.

Pieprasījums nekad nesākas jūsu klēpjdatorā

Pārlūka cilne sūta no klēpjdatora, caur VPN adapteri, iekšējo DNS sufiksu un privātajā apakštīklā. UrlFetchApp sūta no Google pārvaldīta resursdatora, tāpēc tas redz Google atrisinātājus, Google izejas adreses un nevienu no jūsu split-tunnel maršrutiem. Abi ceļi koplieto izklājlapas dokumentu, nevis tīkla atrašanās vietu. Lietotnes piekļuves žurnālā skripta mēģinājums parādās kā Google adrese, nevis kā VPN pūla adrese, un tas ir ātrākais apstiprinājums, ko iegūsiet.

Tāpēc vietējie labojumi neko nedara. Klēpjdatora norādīšana uz citu atrisinātāju, VPN klienta restartēšana vai ieraksta pievienošana hosts maina pārlūka ceļu un atstāj skripta ceļu tieši tādu, kāds tas bija.

Ko tas izslēdz

Tikai iekšēju galapunktu no Apps Script nevar sasniegt, un atļauto IP saraksts šajā vietā ir vājš piekļuves kontroles aizstājējs. Google izejas diapazoni ir plaši, koplietoti ar citiem klientiem un tos nav iespējams piesaistīt vienam skriptam. UrlFetchApp atsauce norāda, ka pieprasījumi nāk no Google IP pūla, un tā ir šī apgalvojuma autoritatīvā versija. Iekšējās lietotnes atvēršana šiem diapazoniem ielaiž trafiku, ko nevarat attiecināt.

Pārlūka sesijas uzvedas tāpat. Sīkdatne vai SSO sesija klēpjdatora pārlūkā neceļo kopā ar pieprasījumu, kas ir jauns HTTPS klients bez sesijas stāvokļa. Viss, kas ir atkarīgs no pārlūka SSO novirzīšanas, beidzas ar šo novirzīšanu, nevis ar jūsu datiem.

Divi īstenojami veidi

Pirmais veids skriptam dod apstiprinātu API. Publicējiet iekšējo pakalpojumu aiz vārtejas, kas autentificē zvanītāju, pēc tam ļaujiet skriptam uzrādīt akreditācijas datu, ko vārteja pieņem, piemēram, pakalpojuma konta pilnvaru. Apps Script tas nozīmē OAuth2 bibliotēku vai ScriptApp.getOAuthToken(), kā arī atļauto zvanītāja identitāšu sarakstu API pusē, nevis IP sarakstu.

Otrais veids maina virzienu. Iekšējs darbs vaicā privāto sistēmu un publicē kontrolētu rezultātu Sheet, Cloud Storage objektā vai BigQuery tabulā, ko skripts lasa. Cloud Run darbs, vietējs plānotājs vai esošs ETL solis var būt šis darbs, un nevienam no tiem nav jāpieņem ienākošs savienojums. Tad izklājlapa patērē datu kopu, nevis saskarni.

Kurš veids uzvarēs, atkarīgs no svaiguma, lauka līmeņa kontroles un no tā, kam jāspēj revidēt lasītāju.

Kas jāsatur publicētajā rezultātā

Pretējā virziena plūsmai vajadzīgs skaidrs līgums: lauki, ko tā nes, atjaunināšanas intervāls, lasītāju grupa un tas, kas notiek, ja iekšējais darbs neizdodas. Bez šiem četriem izklājlapa klusi rāda vakardienas skaitļus. Pievienojiet ģenerētu laikspiedola kolonnu un rindu skaitu, lai novecojis vai daļējs publicējums būtu redzams pašā izklājlapā, nevienam neatverot žurnālu.

API virzienam arī vajadzīgs līgums: kādus akreditācijas datus vārteja pieņem, kādas scopes nes pilnvara un kuras zvanītāju identitātes ir atļautas. 200 atbilde, kas satur pierakstīšanās lapu, nav veiksmīgs izsaukums, tāpēc pārbaudiet saturu, nevis tikai statusa kodu.

Lasiet kļūdu no pareizās puses

Apps Script ziņo par nesasniedzamu resursdatoru kā nepieejamas adreses izņēmumu, kas nav pārlūka ziņojums par noraidītu savienojumu. 403 no vārtejas nozīmē, ka pieprasījums ieradās un akreditācijas dati vai politika tika noraidīti. HTML pierakstīšanās lapa nozīmē, ka pieprasījums sasniedza interaktīvu slāni, ko skripts nevar pabeigt. Trīs dažādas neveiksmes ar trim dažādiem atbildīgajiem.

Turiet skripta žurnālu blakus pārlūka rezultātam, nevis aizstājiet vienu ar otru. Atlikušais jautājums tad ir parasts integrācijas lēmums: dot šai videi nepieciešamo piekļuvi vai piegādāt tai kontrolētu rezultātu.

Saistītie raksti