დაფა ლეპტოპის ბრაუზერში კარგად იხსნება, მაგრამ იგივე ცხრილის სკრიპტი მისამართის მიუწვდომლობის შეცდომით ვარდება. VPN-ის ჩართვა ან გამორთვა არაფერს ცვლის, რადგან მოთხოვნა ლეპტოპს საერთოდ არ ტოვებს. Apps Script Google-ის ინფრასტრუქტურაზე მუშაობს და იქიდან ხსნის საკუთარ კავშირს. ეს ერთი ფაქტი განსაზღვრავს მთელ დიზაინს.

გამოყავით ორი კითხვა სანამ რამეს შეცვლით: რომელი მანქანა აგზავნის მოთხოვნას და რომელ კრედენციალს იღებს მიმღები.

მოთხოვნა არასოდეს იწყება თქვენს ლეპტოპზე

ბრაუზერის ჩანართი აგზავნის ლეპტოპიდან, VPN-ადაპტერის, შიდა DNS სუფიქსის გავლით და კერძო ქვექსელში. UrlFetchApp აგზავნის Google-ის მიერ მართული ჰოსტიდან, ამიტომ ხედავს Google-ის გადამწყვეტებს, Google-ის გასასვლელ მისამართებს და თქვენი split-tunnel მარშრუტებიდან არც ერთს. ორი გზა იზიარებს ცხრილის დოკუმენტს და არა ქსელურ მდებარეობას. აპის წვდომის ჟურნალში სკრიპტის მცდელობა ჩანს როგორც Google-ის მისამართი და არა VPN-ის აუზის მისამართი, და ეს არის ყველაზე სწრაფი დადასტურება, რომელსაც მიიღებთ.

ამიტომ ლოკალური შესწორებები არაფერს აკეთებს. ლეპტოპის სხვა გადამწყვეტზე მიმართვა, 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 შესვლის გვერდი ნიშნავს, რომ მოთხოვნამ მიაღწია ინტერაქტიულ ფენას, რომელსაც სკრიპტი ვერ დაასრულებს. სამი განსხვავებული მარცხი სამი განსხვავებული მფლობელით.

შეინახეთ სკრიპტის ჟურნალი ბრაუზერის შედეგის გვერდით და ნუ ჩაანაცვლებთ ერთს მეორით. დარჩენილი კითხვა მაშინ ჩვეულებრივი ინტეგრაციის გადაწყვეტილებაა: მიეცით ამ გარემოს საჭირო წვდომა, ან მიაწოდეთ კონტროლირებული შედეგი.

დაკავშირებული სტატიები