跳到主要内容

根据 IP 地址生成经纬度

信息

根据 IP 地址生成该区域的经纬度信息

实际效果

ip-location

源代码

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 地址转成经纬度!!!')