Контролната табла добро се отвора во прелистувачот на преносниот сметач, но истата скрипта за табела не успева со грешка за недостапна адреса. Вклучувањето или исклучувањето на VPN-от ништо не менува, зашто барањето воопшто не го напушта преносниот сметач. Apps Script се извршува на инфраструктурата на Google и оттаму ја отвора својата врска. Тој еден факт го одредува целиот дизајн.

Одделете две прашања пред да смените нешто: која машина го праќа барањето и кои акредитиви ги прифаќа примачот.

Барањето никогаш не започнува на вашиот преносен сметач

Јазичето во прелистувачот праќа од преносниот сметач, низ VPN адаптерот, внатрешниот DNS суфикс и во приватната подмрежа. UrlFetchApp праќа од домаќин управуван од Google, затоа ги гледа разрешувачите на Google, излезните адреси на Google и ниту една од вашите split-tunnel рути. Двете патеки делат документ за табела, а не мрежна местоположба. Во дневникот за пристап на апликацијата, обидот на скриптата се појавува како адреса на Google, а не како адреса од базенот на VPN-от, и тоа е најбрзата потврда што ќе ја добиете.

Затоа локалните поправки не прават ништо. Насочувањето на преносниот сметач кон друг разрешувач, повторното стартување на VPN клиентот или додавањето запис во hosts ја менува патеката на прелистувачот и ја остава патеката на скриптата точно таква каква што била.

Што исклучува тоа

До крајна точка достапна само однатре не може да се стигне од Apps Script, а списокот со дозволени IP адреси е слаба замена за контрола на пристап на ова место. Излезните опсези на Google се широки, споделени со други клиенти и невозможно е да се врзат за една скрипта. Референцата за UrlFetchApp наведува дека барањата потекнуваат од базенот на IP адреси на Google, што е авторитативната верзија на тоа тврдење. Отворањето на внатрешната апликација за тие опсези пушта сообраќај што не можете да го припишете.

Сесиите во прелистувачот се однесуваат исто. Колаче или SSO сесија во прелистувачот на преносниот сметач не патува со барањето, кое е нов HTTPS клиент без состојба на сесија. Сето она што зависи од SSO пренасочување во прелистувачот завршува на тоа пренасочување, а не на вашите податоци.

Два изводливи облика

Првиот облик ѝ дава на скриптата одобрен API. Објавете ја внатрешната услуга зад порта што го автентификува повикувачот, потоа нека скриптата претстави акредитиви што портата ги прифаќа, како токен за услужна сметка. Во Apps Script тоа значи библиотека OAuth2 или ScriptApp.getOAuthToken(), заедно со список со дозволени идентитети на повикувачот на страната на API-то наместо список со IP адреси.

Вториот облик ја превртува насоката. Внатрешна задача го прашува приватниот систем и објавува контролиран резултат во Sheet, објект во Cloud Storage или табела во BigQuery што скриптата ја чита. Задача во Cloud Run, локален планер или постоечки ETL чекор можат да бидат таа задача и ниту еден од нив не мора да прифати влезна врска. Табелата потоа троши збир на податоци наместо интерфејс.

Кој облик ќе победи зависи од свежината, контролата на ниво на поле и од тоа кој мора да може да го ревидира читачот.

Што мора да содржи објавениот резултат

Текот во обратна насока бара јасен договор: полињата што ги носи, интервалот на освежување, групата читачи и што се случува кога внатрешната задача ќе не успее. Без тие четири табелата тивко ги прикажува вчерашните бројки. Додајте генерирана колона со временска ознака и број на редови за да биде видливо застарено или делумно објавување во самата табела, без некој да отвори дневник.

Насоката на API-то исто така бара договор: кои акредитиви ги прифаќа портата, кои scopes ги носи токенот и кои идентитети на повикувачот се дозволени. Одговор 200 што содржи страница за најава не е успешен повик, затоа проверете го телото, а не само кодот на состојба.

Читајте ја грешката од правилната страна

Apps Script пријавува недостапен домаќин како исклучок за недостапна адреса, што не е пораката на прелистувачот за одбиена врска. 403 од портата значи дека барањето пристигнало и акредитив или политика биле одбиени. HTML страница за најава значи дека барањето стигнало до интерактивен слој што скриптата не може да го заврши. Три различни неуспеси со три различни одговорни.

Држете го дневникот на скриптата покрај резултатот на прелистувачот наместо да заменувате едно со друго. Останатото прашање тогаш е обична интеграциска одлука: дајте ѝ на таа средина пристапот што ѝ треба или доставете ѝ контролиран резултат.

Поврзани статии