0

I'm using v4 sheets API from google-api-nodejs-client, it returns a lot of data. Though I filter it using fields arguments, the structure of JSON is very complex. So to incorporate it into my logic, I flatten it. And it needs to be safe, I don't want any exceptions to be thrown.

This is how the UNSAFE version of the code looks:

const data = response.sheets[0].data;
const columns = data.map((column) => {
  const rowData = column.rowData;
  const values = rowData[0].values;
  return rowData.map((cellData) => cellData.values[0].userEnteredValue);
});
// ...

If JSON is invalid, an exception is inevitable. I don't want this. The problem is that to fix it, I should add plenty of if-s. This would make the code look ugly.

Let's summarize: Is there a way to map JSON into local objects safely and expressive (and preferably relying only on features of ES6)?

UPDATE

Let's add a little more context. This is a small insight how deep the JSON is, and all I need to map it to an array of strings ('1.06' is one of them).

{  
   "sheets":[  
      {  
         "data":[  
            {  
               "rowData":[  
                  {  
                     "values":[  
                        {  
                           "userEnteredValue":{  
                              "stringValue":"1.06"
                           }
                        }
                     ]
                  },
                  ...
Artem Stepanenko
  • 3,423
  • 6
  • 29
  • 51

0 Answers0