Как вы отображаете объект из транспонированного / инвертированного диапазона, который способен выполнять поиск по значению ключа в GAS? - PullRequest
0 голосов
/ 24 января 2019

Я пишу сценарий для пользовательского function(), который должен отображать определенное значение ключа из диапазона с именем ioRange, который состоит из ячеек "A1: B3", показанных ниже.

// google sheets ui

/*
            [A]            [B]       
 [1]   ||    ID       ||    1      ||
 [2]   ||    NAME     ||    Elon   ||
 [3]   ||    EMOJI    ||    ?     ||
*/

Из того, что я до сих пор собирал, такая структура таблиц ключ-значение не годится для аккуратной обработки листов Google. Например, с помощью указанных выше ячеек сценарии Google вроде создают псевдо ассоциативный массив в виде диапазона, но форматируются с помощью скобок строк сценариев Google и других нюансов, таких как кавычки:

var ioRange = ss.getRange("A1:B3").getValues()

console.log(ioRange)
// => "[[ID, 1], [NAME, Elon], [EMOJI, ?]]"

В настоящее время я застрял при преобразовании ioRange в сопоставленный со значением ключа объект с именем ioObject, возникли проблемы с push(), при котором новые значения ioObject отображаются в правильном формате. Ниже мой плохой код, но, надеюсь, он дает представление о том, чего я пытаюсь достичь.

// ? bad code

var ioObject = {}
for (row = 0; row < ioRange.length; ++row) {
    ioObject.push(`${ioRange[row][0]}: "${ioRange[row][1]} as"`)
}

Я хочу, чтобы ioObject привел к таким выводам:

// ? desired output

console.log(JSON.stringify(ioObject))
/* => '{
            "ID": "1", 
            "NAME": "Elon",   
            "EMOJI": "?"
        }'
*/

Так что я могу выполнять поиск значения ключа следующим образом:

// ? success!

console.log(ioObject["NAME"])
// => "Elon"

Я извлек javascript - Создание массива хэшей в Google Apps Script - Переполнение стека и Хеш-таблицы в Javascript , но не повезло.


<Ч />
РЕШЕНИЕ:

// ✅ solved w/ escaping double quotes
var ioObject = {}
for (row = 0; row < ioRange.length; ++row) {
    ioObject[ioRange[io][0]]=ioRange[io][1]
}
console.log(JSON.stringify(ioObject))
// => '{"ID"="1", "NAME"="Elon", "EMOJI"="?"}'

// ? success!
console.log(ioObject["NAME"])
// => "Elon"
...