Я использую TTN для отправки данных в формате JSON в ячейку на листах, но все данные находятся в одной ячейке. как бы я извлекал только те данные, которые мне нужны, в ячейку для каждой точки данных. файл JSON выглядит так. Данные, которые мне нужны, это все decoded.payload.
{"end_device_ids":{"device_id":"carls","application_ids":{"application_id":"доказать"},"dev_eui":"A861A3032496B11","join_eui":"00000000000000000","dev_addr":"260BDF9 "},"correlation_ids":["as:up:01FXJ2E9J1PDY7QPR8DPM69NMK","gs:conn:01FXHWEX62T1MBPBP0MX9JJJ95","gs:up:host:01FXHWEX6GK8F3ZKYTZNC7GEJ","gs:uplink:01FXJ29BDR6AK5R9D5P5P5R1T3","1FX:uplink:01FXJ29BDR6AK5R9D5P5FMTBBCEBB0","1FX:uplink:01FXJ2E9J1PDY7QPR8DPM69NMK","gs:conn:01FXHWEX62T1MBPBP0MX9JJJ95","gs:up:host:01FXHWEX6GK8F3ZKYTZNC7GEJ" "rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01FXJ2E9B2M1Y63PR0DV5BZW7","rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01FXJ2E9J0DXKCP7KV5F00DK9","received_at":"2022-03-07T11:654:32.61.61.61. ","uplink_message":{"session_key_id":"AX9t/rec6yxiPpfOgbbw==","f_port":2,"f_cnt":2,"frm_payload":"AWBYQEtA7s=","decoded_payload":{**
«I1I_Overflade»: 3,59, «I2I_Dybde»: 3,53, «I3I_Klarhed»: 3,01, «I4I_Lys»: 9,55
**},"rx_metadata":[{"gateway_ids":{"gateway_id":"carls-gateway","eui":"58A0CFFFE80127"},"time":"2022-03-07T11:32:41.363879919Z" ,"отметка времени":1974812332,"rssi":-111,"channel_rssi":-111,"snr":-7,"местоположение":{"широта":55.284274413402,"долгота":14.7813155831094,"источник":" SOURCE_REGISTRY"},"uplink_token":"ChsKGQoNYFybHMt2F0ZXdheRIIWKDL//6AGycrP3UrQcaDjZ2peRBhD5jufSASDgn/PfvLYBKgwI2dXkQYQ7vBrQE="}],"settings":{"data_rate":{"lora":{"пропускная способность":125000,"8}reading_factor,"8}reading_factor,"8} coding_rate":"4/5","частота":"86500000","отметка времени":1974812332,"время":"2022-03-07T11:32:41.363879919Z"},"received_at":"2022-03- 07T11:32:41.443074303Z","consumed_airtime":"0.113152s","местоположения":{"пользователь":{"широта":52.282073015039,"долгота":12.7818470012207,"источник":"SOURCE_REGISTRY"}}," version_ids":{"brand_id":"arduino","model_id":"mkr-wan-1310","hardware_version":"1.0","firmware_version":"1.2.0","band_id":"EU_863_870"} ,"network_ids":{"net_id":"000013","tenant_id":"ttn","cluster_id":"ttn-eu1"}}}
Я хотел бы извлечь значения I1I_Overflade, I2I_Dybde, I3I_Klarhed, I4I_Lys
Это данные о температуре на поверхности и на глубине. до сих пор я использовал =MID(A1,706,4), но это не будет работать для больших наборов данных, так как количество объектов перед изменением данных.
Вы могли бы запустить свой json через онлайн-конвертер и сначала превратить его в csv?
Попробуй это
=extractPayload(A1)
с этой пользовательской функцией
function extractPayload(json) {
var data = JSON.parse(json)
var result = []
result.push(data.uplink_message.decoded_payload.I1I_Overflade)
result.push(data.uplink_message.decoded_payload.I2I_Dybde)
result.push(data.uplink_message.decoded_payload.I3I_Klarhed)
result.push(data.uplink_message.decoded_payload.I4I_Lys)
return [result]
}
Большое спасибо! работает отлично. Не уверен, сколько часов я потратил, пытаясь решить эту проблему.
function lfunko() {
const json = '{"end_device_ids":{"device_id":"carls","application_ids":{"application_id":"prove"},"dev_eui":"A861A3032496B11","join_eui":"0000000000000000","dev_addr":"260BDF9"},"correlation_ids":["as:up:01FXJ2E9J1PDY7QPR8DPM69NMK","gs:conn:01FXHWEX62T1MBPBP0MX9JJJ95","gs:up:host:01FXHWEX6GK8F3ZKYTZNC7GEJ","gs:uplink:01FXJ29BDR6AK5R9D5P5R1T3","ns:uplink:01FXJ2E9BPAQMTQBBRTQCKFRC","rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01FXJ2E9B2M1Y63PR0DV5BZW7","rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01FXJ2E9J0DXKCP7KV5F00DK9"],"received_at":"2022-03-07T11:32:41.665432609Z","uplink_message":{"session_key_id":"AX9t/rec6yxiPpfOgbbw= = ","f_port":2,"f_cnt":2,"frm_payload":"AWBYQEtA7s = ","decoded_payload":{"I1I_Overflade":3.59,"I2I_Dybde":3.53,"I3I_Klarhed":3.01,"I4I_Lys":9.55},"rx_metadata":[{"gateway_ids":{"gateway_id":"carls-gateway","eui":"58A0CFFFE80127"},"time":"2022-03-07T11:32:41.363879919Z","timestamp":1974812332,"rssi":-111,"channel_rssi":-111,"snr":-7,"location":{"latitude":55.284274413402,"longitude":14.7813155831094,"source":"SOURCE_REGISTRY"},"uplink_token":"ChsKGQoNYFybHMt2F0ZXdheRIIWKDL//6AGycrP3UrQcaDjZ2peRBhD5jufSASDgn/PfvLYBKgwI2dXkQYQ7vBrQE = "}],"settings":{"data_rate":{"lora":{"bandwidth":125000,"spreading_factor":8}},"coding_rate":"4/5","frequency":"86500000","timestamp":1974812332,"time":"2022-03-07T11:32:41.363879919Z"},"received_at":"2022-03-07T11:32:41.443074303Z","consumed_airtime":"0.113152s","locations":{"user":{"latitude":52.282073015039,"longitude":12.7818470012207,"source":"SOURCE_REGISTRY"}},"version_ids":{"brand_id":"arduino","model_id":"mkr-wan-1310","hardware_version":"1.0","firmware_version":"1.2.0","band_id":"EU_863_870"},"network_ids":{"net_id":"000013","tenant_id":"ttn","cluster_id":"ttn-eu1"}}}';
const data = JSON.parse(json);
let o = Object.keys(data.uplink_message.decoded_payload).map(k => [`${k}: ${data.uplink_message.decoded_payload[k]}`]);
Logger.log(o)
SpreadsheetApp.getActiveSheet().getRange(1,1,o.length,o[0].length).setValues(o);
}
Execution log
8:35:51 PM Notice Execution started
8:35:51 PM Info [[I1I_Overflade: 3.59], [I2I_Dybde: 3.53], [I3I_Klarhed: 3.01], [I4I_Lys: 9.55]]
8:35:52 PM Notice Execution completed
А |
---|
I1I_Overflade: 3,59 |
I2I_Dybde: 3,53 |
I3I_Klarhed: 3.01 |
I4I_Lys: 9,55 |
Что вы хотите извлечь?