Перебирать список, разделенный запятыми, в ячейке Google Таблиц - PullRequest
1 голос
/ 19 июня 2020

Я работаю над таблицей Google и хочу автоматизировать процесс преобразования столбцов в пользовательский объект JSON. У меня есть один столбец на моем листе, который представляет собой список строк, разделенных запятыми:

"apple", "orange", "banana"

, и я хочу создать поле Array с этим. Легко просто создать массив с CONCATENATE:

=CONCATENATE(CHAR(34), "list", CHAR(34), " : [", A1, "]")

дает мне:

"list" : ["apple", "orange", "banana"]

Теперь я хочу повернуть каждый элемент в списке в свой собственный JSON объект. Мой желаемый результат:

"list" : [  { "name" : "apple" },
            { "name" : "orange" },
            { "name" : "banana" }
          ]

Если в ячейке только один элемент, это простая замена:

==SUBSTITUTE("{ name: ''}", "''", A1)

дает мне то, что я хочу:

{ "name" : "apple" }

Но фокус в том, что я не знаю, сколько элементов находится в ячейке с самого начала, и я хочу SUBSTITUTE и CONCATENATE для каждого элемента .

До сих пор я пытался избегать написания сценариев; возможно ли это сделать с помощью некоторых умных функций? Или мне нужно для этого сейчас использовать скрипт?

1 Ответ

2 голосов
/ 19 июня 2020

попробуйте:

=ARRAYFORMULA(SUBSTITUTE(IF(A2:A="",,"""list"" : [ "&REGEXREPLACE(
 TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(IFERROR(SPLIT(A2:A, ","))<>"", 
 "{ ""name"" : "&SPLIT(A2:A, ",")&" },♦", ))
 ,,999^99))), ",♦$", )&" ♦]"), "♦", CHAR(10)))

enter image description here

...