Puoi cercare gli ID luogo per le regioni offline chiamando l'API Region Lookup da Fogli Google utilizzando Apps Script. Questa opzione è consigliata per i set di dati in cui i parametri di input sono ambigui e potrebbero risolvere in più ID luogo (ad esempio "10 Main Street"), il che potrebbe richiedere il debug. È stato fornito uno script di esempio con le seguenti funzioni:
SearchRegionByLocation
cerca un luogo il cui confine contiene le coordinate di latitudine/longitudine specificate.SearchRegionByAddress
cerca un luogo il cui confine contiene l'indirizzo specificato.SearchRegionByPlaceId
cerca un luogo con l'ID luogo specificato.LookupRegionByName
cerca un luogo con il nome specificato.LookupRegionByUnitCode
cerca un luogo con il codice unità specificato.
Funzioni personalizzate di ricerca regione
Per utilizzare le funzioni personalizzate, devi prima aggiungere il codice dello script .gs delle funzioni personalizzate all'editor di script di Apps Script. Una volta caricato lo script, puoi chiamare le funzioni come faresti con qualsiasi altra funzione di foglio di lavoro. Gli script prelevano i dati di input dalle celle. Chiama le funzioni personalizzate dal foglio come segue:
=LookupRegionByName(A2,C2,D2,E2)
I risultati vengono visualizzati nella cella contenente la funzione e nelle due celle a destra. Se sono disponibili ID luogo candidati, i risultati relativi a questi ID verranno visualizzati anche nelle celle adiacenti. Per la verifica viene fornito un link alla pagina del luogo che mostra il nome e il poligono della regione in Google Maps. Nel seguente esempio, se la funzione viene incollata nella cella A1, i risultati simili a quanto segue:
ID luogo | URL pagina indirizzo | Codice di errore |
---|---|---|
ChIJLQQwv4qBb0gRIMaY1COLDQU | https://www.google.com/maps/search/?api=1&query=%20&query_place_id=ChIJLQQwv4qBb0gRIMaY1COLDQU |
Nell'esempio precedente, la richiesta è andata a buon fine, quindi la cella di errore è vuota. Gli errori che impediscono l'esecuzione corretta dello script (ad esempio l'omissione di una chiave API valida) vengono visualizzati come commento per la cella contenente la funzione.
Aggiungere le funzioni personalizzate ad Apps Script
- Apri un foglio di lavoro in Fogli Google.
- Seleziona l'elemento di menu Estensioni > Apps Script.
- Elimina qualsiasi codice nell'editor di script.
- Copia e incolla il codice dell'esempio riportato di seguito nell'editor di script.
- Sostituisci
YOUR_API_KEY
con una chiave API senza restrizioni appartenente a un progetto in cui è abilitata l'API di ricerca delle regioni. - In alto, fai clic su Salva .
/** * @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); }