คุณสามารถค้นหารหัสสถานที่สำหรับภูมิภาคแบบออฟไลน์ได้โดยเรียกใช้ Region Lookup API จาก Google ชีตโดยใช้ Apps Script เราขอแนะนำให้ใช้กับชุดข้อมูลที่พารามิเตอร์อินพุตมีความคลุมเครือและอาจแก้ไขเป็นรหัสสถานที่ได้หลายรหัส (เช่น "10 Main Street") ซึ่งอาจต้องมีการแก้ไขข้อบกพร่อง เรามีสคริปต์ตัวอย่างพร้อมฟังก์ชันต่อไปนี้
SearchRegionByLocation
ค้นหาสถานที่ที่มีขอบเขตซึ่งมีพิกัดละติจูด/ลองจิจูดที่ระบุSearchRegionByAddress
ค้นหาสถานที่ที่มีขอบเขตเป็นที่อยู่ซึ่งระบุSearchRegionByPlaceId
ค้นหาสถานที่ที่มีรหัสสถานที่ที่ระบุLookupRegionByName
ค้นหาสถานที่ที่มีชื่อที่ระบุLookupRegionByUnitCode
ค้นหาสถานที่ที่มีรหัสหน่วยที่ระบุ
ฟังก์ชันการค้นหาภูมิภาคที่กําหนดเอง
หากต้องการใช้ฟังก์ชันที่กําหนดเอง คุณต้องเพิ่มโค้ดสคริปต์ .gs ของฟังก์ชันที่กําหนดเองลงในเครื่องมือแก้ไขสคริปต์ Apps Script ก่อน เมื่อโหลดสคริปต์แล้ว คุณจะเรียกใช้ฟังก์ชันได้เช่นเดียวกับการเรียกใช้ฟังก์ชันอื่นๆ ของสเปรดชีต สคริปต์จะรับข้อมูลอินพุตจากเซลล์ เรียกใช้ฟังก์ชันที่กำหนดเองจากชีตดังนี้
=LookupRegionByName(A2,C2,D2,E2)
ระบบจะแสดงผลลัพธ์ในเซลล์ที่มีฟังก์ชันและ 2 เซลล์ทางด้านขวา หากมีรหัสสถานที่ที่ตรงกัน ระบบจะแสดงผลลัพธ์ของรหัสสถานที่เหล่านั้นในเซลล์ที่อยู่ติดกันด้วย ลิงก์ไปยังหน้าสถานที่ที่แสดงชื่อและรูปหลายเหลี่ยมของภูมิภาคใน Google Maps มีไว้เพื่อการยืนยัน ในตัวอย่างนี้ หากวางฟังก์ชันลงในเซลล์ A1 ผลลัพธ์จะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้
รหัสสถานที่ | URL ของหน้าสถานที่ | รหัสข้อผิดพลาด |
---|---|---|
ChIJLQQwv4qBb0gRIMaY1COLDQU | https://www.google.com/maps/search/?api=1&query=%20&query_place_id=ChIJLQQwv4qBb0gRIMaY1COLDQU |
ในตัวอย่างก่อนหน้านี้ คําขอสําเร็จ เซลล์ข้อผิดพลาดจึงว่างเปล่า สำหรับข้อผิดพลาดที่ทำให้สคริปต์ทำงานไม่ถูกต้อง (เช่น การละเว้นคีย์ API ที่ถูกต้อง) ข้อผิดพลาดจะปรากฏเป็นความคิดเห็นสำหรับเซลล์ที่มีฟังก์ชัน
เพิ่มฟังก์ชันที่กำหนดเองลงใน Apps Script
- เปิดสเปรดชีตใน Google ชีต
- เลือกรายการเมนู ส่วนขยาย > Apps Script
- ลบโค้ดในเครื่องมือแก้ไขสคริปต์
- คัดลอกและวางโค้ดจากตัวอย่างด้านล่างลงในเครื่องมือแก้ไขสคริปต์
- แทนที่
YOUR_API_KEY
ด้วยคีย์ API ที่ไม่มีข้อจำกัดซึ่งอยู่ในโปรเจ็กต์ที่เปิดใช้ API การค้นหาภูมิภาค - คลิกบันทึก ที่ด้านบน
/** * @fileoverview Provides custom Geo functions in Google Sheets for matching boundaries. * * SearchRegionByLocation searches for a region whose boundary contains the specified latitude/longitude coordinates. * * SearchRegionByAddress searches for a region whose boundary contains the specified address. * * SearchRegionByPlaceId searches for a region whose boundary contains the specified place ID. * * LookupRegionByName looks up a region with the specified name. * * LookupRegionByUnitCode looks up a region with the specified unit code. * @OnlyCurrentDoc */ var api_key = "YOUR_API_KEY"; // An unrestricted key is recommended for local use only (deployment is NOT recommended). function format_url(place_id) { return place_id && 'https://www.google.com/maps/search/?api=1&query=%20&query_place_id=' + place_id; } function format_result(result) { let matches = result.matches || []; let firstMatch = result.matches[0] || {}; let placeId = firstMatch.matchedPlaceId || ''; let debugInfo = firstMatch.debugInfo || ''; let candidates = firstMatch.candidatePlaceIds || []; return [[ placeId || '(NULL)', format_url(placeId), debugInfo, candidates[0], format_url(candidates[0]), candidates[1], format_url(candidates[1]), candidates[2], format_url(candidates[2]) ]]; } /** * Searches for a place whose boundary contains the specified latitude/longitude coordinates. * * @param {number} latitude - The latitude where the place will be found (e.g., 37.531939). * @param {number} longitude - The longitude where the place will be found (e.g., -122.2994121). * @param {string} place_type - The place type of the place ("postal_code", "administrative_area_level_1", "administrative_area_level_2", "locality", or "country"). * * @return {string} The place_id of the place, or null if none was found. * * @customfunction */ function SearchRegionByLocation( latitude, longitude, place_type) { var data = { "search_values": [ { "latlng": { 'latitude': latitude, 'longitude': longitude }, // { latitude: 37.531939, longitude: -122.2994121 } "place_type": place_type, "region_code": null, "language_code": null, } ] }; var options = { 'method' : 'post', 'contentType': 'application/json', 'headers': { 'X-Goog-Api-Key' : api_key }, // Convert the JavaScript object to a JSON string. 'payload' : JSON.stringify(data) }; var response = UrlFetchApp.fetch( 'https://regionlookup.googleapis.com/v1alpha:searchRegion', options); var resultText = response.getContentText(); console.log(resultText); var result = JSON.parse(resultText); return format_result(result); } /** * Searches for a place whose boundary contains the specified address. * * @param {string} address - An address within the place boundaries (e.g., "1505 Salado Dr, Mountain View, CA"). * @param {string} place_type - The geo type id of the place (e.g., "locality"). * @param {string} [region_code='us'] - The region code of the place (e.g., "US"). * @param {string} [language_code='en'] - The language code of the place's name. (e.g., "en"). * * @return {string} The place_id of the place, or null if none was found. * * @customfunction */ function SearchRegionByAddress( address, place_type, region_code, language_code) { var data = { "search_values": { "address": address, "place_type" : place_type, "region_code": region_code || 'us', "language_code": language_code || 'en', } }; var options = { 'method' : 'post', 'contentType': 'application/json', 'headers': { 'X-Goog-Api-Key' : api_key }, // Convert the JavaScript object to a JSON string. 'payload' : JSON.stringify(data) }; var response = UrlFetchApp.fetch( 'https://regionlookup.googleapis.com/v1alpha:searchRegion', options); var resultText = response.getContentText(); console.log(resultText); var result = JSON.parse(resultText); return format_result(result); } /** * Searches for a place with the specified place ID. * * @param {string} place_id - The place ID to search for. * @param {string} place_type - The geo type id of the place (e.g., "locality"). * @param {string} [region_code='us'] - The region code of the place (e.g., "US"). * @param {string} [language_code='en'] - The language code of the place's name. (e.g., "en"). * * @return {string} The place_id of the place, or null if none was found. * * @customfunction */ function SearchRegionByPlaceId( place_id, place_type, region_code, language_code) { var data = { "search_values": { "place_id": place_id, "place_type" : place_type, "region_code": region_code || 'us', "language_code": language_code || 'en', } }; var options = { 'method' : 'post', 'contentType': 'application/json', 'headers': { 'X-Goog-Api-Key' : api_key }, // Convert the JavaScript object to a JSON string. 'payload' : JSON.stringify(data) }; var response = UrlFetchApp.fetch( 'https://regionlookup.googleapis.com/v1alpha:searchRegion', options); var resultText = response.getContentText(); console.log(resultText); var result = JSON.parse(resultText); return format_result(result); } /** * Looks up a place with the specified name. * * @param {string} place_name - The name of the place (e.g., "Palo Alto"). * @param {string} place_type - The geo type id of the place (e.g., "locality"). * @param {string} [region_code='us'] - The region code of the place (e.g., "US"). * @param {string} [language_code='en'] - The language code of the place's name. (e.g., "en"). * * @return {string} The place_id of the place, or null if none was found. * * @customfunction */ function LookupRegionByName( place, place_type, region_code, language_code) { var data = { "identifiers": [ { "place": '' + place, "place_type": place_type, "region_code": region_code || 'us', "language_code": language_code || 'en', } ] }; var options = { 'method' : 'post', 'contentType': 'application/json', 'headers': { 'X-Goog-Api-Key' : api_key }, // Convert the JavaScript object to a JSON string. 'payload' : JSON.stringify(data), //'muteHttpExceptions' : true, }; var response = UrlFetchApp.fetch( 'https://regionlookup.googleapis.com/v1alpha:lookupRegion', options); var resultText = response.getContentText(); console.log(resultText); var result = JSON.parse(resultText); return format_result(result); } /** * Looks up a place with the specified unit code. * * @param {string} place_name - The name of the place (e.g., "Palo Alto"). * @param {string} place_type - The geo type id of the place (e.g., "locality"). * @param {string} [region_code='us'] - The region code of the place (e.g., "US"). * @param {string} [language_code='en'] - The language code of the place's name. (e.g., "en"). * * @return {string} The place_id of the place, or null if none was found. * * @customfunction */ function LookupRegionByUnitCode( unit_code, place_type, region_code, language_code) { var data = { "identifiers": [ { "unit_code": '' + unit_code, "place_type": place_type, "region_code": region_code || 'us', "language_code": language_code || 'en', } ] }; var options = { 'method' : 'post', 'contentType': 'application/json', 'headers': { 'X-Goog-Api-Key' : api_key }, // Convert the JavaScript object to a JSON string. 'payload' : JSON.stringify(data), //'muteHttpExceptions' : true, }; var response = UrlFetchApp.fetch( 'https://regionlookup.googleapis.com/v1alpha:lookupRegion', options); var resultText = response.getContentText(); console.log(resultText); var result = JSON.parse(resultText); return format_result(result); }