Как указать данные JSON из ячейки в листах Google

Я использую 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"}}}

Что вы хотите извлечь?

Mike Steelson 19.03.2022 14:47

Я хотел бы извлечь значения I1I_Overflade, I2I_Dybde, I3I_Klarhed, I4I_Lys

Cheide 19.03.2022 14:54

Это данные о температуре на поверхности и на глубине. до сих пор я использовал =MID(A1,706,4), но это не будет работать для больших наборов данных, так как количество объектов перед изменением данных.

Cheide 19.03.2022 15:06

Вы могли бы запустить свой json через онлайн-конвертер и сначала превратить его в csv?

David 19.03.2022 15:19
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуй это

=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]
}

Большое спасибо! работает отлично. Не уверен, сколько часов я потратил, пытаясь решить эту проблему.

Cheide 19.03.2022 15:32

Получение полезной нагрузки

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

Другие вопросы по теме

Похожие вопросы

Как добавить условные операторы к пользовательскому вводу в сценариях приложений с помощью циклов while?
Запуск пользовательской функции из Google Sheet без ошибки разрешения
Измените цвет фона ячейки, если тот же номер или с префиксом совпадает в диапазоне другой рабочей книги (ID) Sheet2!(A2:A)
Как принять условия Google Workspace Marketplace?
Анализ XML-канала с помощью скрипта Google Apps (невозможно прочитать свойство «getChildren» из неопределенного»)
Контрольный список фильтров, копирование/вставка диапазона на другой лист (местоположение на основе совпадения слов), вставка новых строк по мере необходимости, запуск по нажатию кнопки, сброс листа
Скрипт приложений Google Sheets получает диапазон всего листа, даже если в нем нет данных
Как отредактировать манифест для создания тестового развертывания надстройки Google Sheets?
Разобрать XML в таблицу Google в скрипте Google Apps
Сценарий приложения: как установить значения каждой ячейки с помощью .getRangeList?