Apps Script - прочитайте столбец и введите JSON и строку - PullRequest
2 голосов
/ 21 апреля 2020

Задача:

Столбец, полный данных (неизвестная длина), например.

|data1 |
|data2 |
|data3 |

Мне нужно преобразовать это в JSON (а затем делать другие вещи, но я знаю, как)

{
  "adminSettings":
  { "Value":
    {"whitelist":
      [
        "data1",
        "data2",
        "data3"
      ],
      "netWhitelist":"data1\ndata2\ndata3"
    }
  }
}

Ожидаемый путь:

Если я правильно понимаю, я смогу указать большую часть этого JSON в коде, а затем загрузить столбец в скрипт и затем

  1. L oop через массив, который он создаст, и для каждой ячейки добавьте значение к whitelist в качестве ключа.
  2. L oop через тот же массив и примите значения и объедините в строку, добавив "\ n" между ними, а затем добавить в качестве значения к netWhitelist

Я собрал это, но это далеко не закончено, и большинство руководств о том, как взять данные из JSON и поместить в лист, а не наоборот.

function make_JSON() {
  // Read data in column
  var AUTO_data = activeSpreadsheet.getSheetByName("AUTO_data");
  var values =  AUTO_data.getRange("A2:A").getValues();
  var JSON = {"adminSettings":
              {"Value":
               {"whitelist":
                [

                ],
                "netWhitelist": netWhitelist_string
               }
              }
             }



}

Любые советы и примеры помогут, я бы предпочел разобраться и решить это самостоятельно.

1 Ответ

3 голосов
/ 21 апреля 2020

getValues() возвращает двумерный массив. Свести в одномерный массив и добавить его в json ( Array.join для создания строки):

function make_JSON() {
  // Read data in column
  var AUTO_data = activeSpreadsheet.getSheetByName("AUTO_data");
  var values =  AUTO_data.getRange("A2:A"+AUTO_data.getLastRow()).getValues().flat();
  var JSON = {"adminSettings":
              {"Value":
               {"whitelist":values,
                "netWhitelist": values.join('\n')
               }
              }
             }



}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...