Я пишу сценарий для пользовательского 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"