VPN വഴി Apps Script-ന് നിങ്ങളുടെ ആന്തരിക ആപ്പിലേക്ക് എത്താൻ കഴിയാത്തത് എന്തുകൊണ്ട്
Apps Script Google-ന്റെ നെറ്റ്വർക്കിൽ പ്രവർത്തിക്കുന്നു, VPN ഉള്ള ലാപ്ടോപ്പിൽ അല്ല. അഭ്യർത്ഥന അയയ്ക്കുന്ന യന്ത്രത്തിനായി ഡാറ്റ പാത രൂപകൽപ്പന ചെയ്യുക.
ലാപ്ടോപ്പിലെ ബ്രൗസറിൽ ഡാഷ്ബോർഡ് നന്നായി തുറക്കുന്നു, പക്ഷേ അതേ സ്പ്രെഡ്ഷീറ്റ് സ്ക്രിപ്റ്റ് വിലാസം ലഭ്യമല്ല എന്ന പിശകിനാൽ പരാജയപ്പെടുന്നു. VPN ഓൺ ചെയ്യുന്നതോ ഓഫ് ചെയ്യുന്നതോ ഒന്നും മാറ്റുന്നില്ല, കാരണം അഭ്യർത്ഥന ലാപ്ടോപ്പിൽ നിന്ന് ഒട്ടും പുറത്തുപോകുന്നില്ല. Apps Script Google-ന്റെ അടിസ്ഥാനസൗകര്യത്തിൽ പ്രവർത്തിക്കുന്നു, അവിടെ നിന്ന് സ്വന്തം കണക്ഷൻ തുറക്കുന്നു. ആ ഒരു വസ്തുത മുഴുവൻ രൂപകൽപ്പനയും നിർണ്ണയിക്കുന്നു.
എന്തെങ്കിലും മാറ്റുന്നതിന് മുമ്പ് രണ്ട് ചോദ്യങ്ങൾ വേർതിരിക്കുക: ഏത് യന്ത്രമാണ് അഭ്യർത്ഥന അയയ്ക്കുന്നത്, സ്വീകർത്താവ് ഏത് ക്രെഡൻഷ്യൽ സ്വീകരിക്കുന്നു.
അഭ്യർത്ഥന ഒരിക്കലും നിങ്ങളുടെ ലാപ്ടോപ്പിൽ തുടങ്ങുന്നില്ല
ബ്രൗസർ ടാബ് ലാപ്ടോപ്പിൽ നിന്ന് VPN അഡാപ്റ്റർ, ആന്തരിക DNS പ്രത്യയം വഴി സ്വകാര്യ സബ്നെറ്റിലേക്ക് അയയ്ക്കുന്നു. UrlFetchApp Google നിയന്ത്രിക്കുന്ന ഹോസ്റ്റിൽ നിന്ന് അയയ്ക്കുന്നു, അതിനാൽ അത് Google-ന്റെ റിസോൾവറുകളും Google-ന്റെ എഗ്രസ് വിലാസങ്ങളും കാണുന്നു, നിങ്ങളുടെ സ്പ്ലിറ്റ്-ടണൽ റൂട്ടുകളിൽ ഒന്നും കാണുന്നില്ല. രണ്ട് പാതകളും ഒരു സ്പ്രെഡ്ഷീറ്റ് രേഖ പങ്കിടുന്നു, ഒരു നെറ്റ്വർക്ക് സ്ഥാനമല്ല. ആപ്പിന്റെ ആക്സസ് ലോഗിൽ സ്ക്രിപ്റ്റിന്റെ ശ്രമം VPN പൂളിലെ വിലാസമായല്ല, Google വിലാസമായി കാണുന്നു, അതാണ് നിങ്ങൾക്ക് ലഭിക്കുന്ന ഏറ്റവും വേഗതയുള്ള സ്ഥിരീകരണം.
അതിനാൽ പ്രാദേശിക തിരുത്തലുകൾ ഒന്നും ചെയ്യുന്നില്ല. ലാപ്ടോപ്പിനെ മറ്റൊരു റിസോൾവറിലേക്ക് ചൂണ്ടിക്കാണിക്കുന്നതോ VPN ക്ലയന്റ് പുനരാരംഭിക്കുന്നതോ hosts-ൽ ഒരു എൻട്രി ചേർക്കുന്നതോ ബ്രൗസറിന്റെ പാത മാറ്റുകയും സ്ക്രിപ്റ്റിന്റെ പാത മുമ്പുണ്ടായിരുന്നതുപോലെ തന്നെ വിടുകയും ചെയ്യുന്നു.
അത് എന്താണ് ഒഴിവാക്കുന്നത്
ആന്തരികമായ ഒരു എൻഡ്പോയിന്റിൽ Apps Script-ൽ നിന്ന് എത്താൻ കഴിയില്ല, ഈ സ്ഥാനത്ത് അനുവദനീയ IP പട്ടിക ആക്സസ് നിയന്ത്രണത്തിന് ദുർബലമായ പകരമാണ്. Google-ന്റെ എഗ്രസ് ശ്രേണികൾ വിശാലമാണ്, മറ്റ് ഉപഭോക്താക്കളുമായി പങ്കിടുന്നു, ഒരു സ്ക്രിപ്റ്റിലേക്ക് ബന്ധിക്കാൻ കഴിയില്ല. UrlFetchApp റഫറൻസ് അഭ്യർത്ഥനകൾ Google-ന്റെ IP പൂളിൽ നിന്ന് വരുന്നു എന്ന് പറയുന്നു, അതാണ് ആ വാദത്തിന്റെ അധികാരമുള്ള പതിപ്പ്. ആന്തരിക ആപ്പ് ആ ശ്രേണികൾക്കായി തുറക്കുന്നത് നിങ്ങൾക്ക് ആരോപിക്കാൻ കഴിയാത്ത ട്രാഫിക് അകത്തേക്ക് വിടുന്നു.
ബ്രൗസർ സെഷനുകളും അതുപോലെ പെരുമാറുന്നു. ലാപ്ടോപ്പിന്റെ ബ്രൗസറിലുള്ള കുക്കിയോ 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 സൈൻ-ഇൻ പേജ് അർത്ഥം അഭ്യർത്ഥന സ്ക്രിപ്റ്റിന് പൂർത്തിയാക്കാൻ കഴിയാത്ത ഒരു ഇന്ററാക്ടീവ് പാളിയിൽ എത്തി. മൂന്ന് വ്യത്യസ്ത പരാജയങ്ങൾ, മൂന്ന് വ്യത്യസ്ത ഉത്തരവാദികൾ.
സ്ക്രിപ്റ്റിന്റെ ലോഗ് ബ്രൗസറിന്റെ ഫലത്തിനൊപ്പം സൂക്ഷിക്കുക, ഒന്നിനെ മറ്റൊന്നുകൊണ്ട് മാറ്റരുത്. അപ്പോൾ ബാക്കിയുള്ള ചോദ്യം സാധാരണ ഇന്റഗ്രേഷൻ തീരുമാനമാണ്: ആ പരിസ്ഥിതിക്ക് ആവശ്യമായ ആക്സസ് നൽകുക, അല്ലെങ്കിൽ അതിന് നിയന്ത്രിത ഫലം എത്തിക്കുക.