根据 IP 地址生成经纬度
信息
根据 IP 地址生成该区域的经纬度信息
实际效果
源代码
const datasheet = await space.getActiveDatasheetAsync();
const ipField = await input.fieldAsync("请选择 IP 地址所在列:", datasheet);
const coordinateField = await input.fieldAsync("请选择经纬度生成列:", datasheet);
// 定义数据集,存储用于更新「经纬度」列的数据
const finalData = [];
// 通过 IP 地址获取坐标信息
async function getCoordinateInfo(ip) {
const res = await fetch(`https://ipwho.is/${ip}`)
return await res.json()
}
const ipFieldId = ipField.id;
const coordinateFieldId = coordinateField.id;
const records = datasheet.getRecordsAsync();
for (let record of records) {
const recordId = record.id;
let ip = record.getCellValue(ipFieldId);
//为空的数据不属于要转成经纬度的内容,所以跳过
if (ip == null) continue;
const res = await getCoordinateInfo(ip)
const coordinate = `${res.longitude}, ${res.latitude}`
// 将需要更新的数据加入到 finalData 数组中
finalData.push({
id: recordId,
valuesMap: {
[coordinateFieldId]: coordinate,
}
});
}
if (finalData.length) {
await datasheet.updateRecordsAsync(finalData);
}
output.text('已将 IP 地址转成经纬度!!!')