1

我使用this script对Google电子表格中的地址列进行地址解析。它创建一个函数getLatLon,它接受地址列中的值。尽管我只有190行,但我很快达到了每日地理编码API限制2,500。我认为这是因为脚本每次载入时都会运行脚本。限制Google电子表格中的地址解析呼叫

我想让脚本仅在地址尚未经过地理编码的情况下才能运行。为此,我尝试使用公式访问单元格的值以查看它是否为空。如果是这样,请运行地理编码器。但它让我的所有细胞,甚至是经过地理编码的细胞都变成了空白。

这是我的代码。我不确定是否正确使用getValue()(如果没有值,它将返回空字符串),或者如果我的单元格具有公式使该值非空白。

还有什么方法可以测试单元格中的空白值?

function getLatLon(address) { 
    var sh = SpreadsheetApp.getActiveSpreadsheet(); 
    var cell = sh.getActiveCell(); 
    var value = cell.getValue(); 

    if (address == '') { 
    Logger.log("Must provide an address"); 
    return; 
    } 


    if (value == '') { 

    var geocoder = Maps.newGeocoder(); 
    var location; 
    location = geocoder.geocode(address); 
    Utilities.sleep(2000); 
// Only change cells if geocoder seems to have gotten a 
// valid response. 
    if (location.status == 'OK') { 
     lat = location["results"][0]["geometry"]["location"]["lat"]; 
     lng = location["results"][0]["geometry"]["location"]["lng"]; 
     return lat + "," + lng 

    } 
    } 
}; 

回答

0

您可以将经过地理编码的行移动到另一个工作表。始终保持清晰的脚本数据。

+0

这就是我最终做的,但只有复制 - >粘贴值。这是你的意思,明确的数据?有没有一种方法可以通过脚本实现自动化? – robroc