Я пишу пользовательский сценарий function()
, который должен отображать определенное значение пары "ключ-значение" из диапазона с именем ioRange
, состоящего из ячеек "A1:B3", показанных ниже.
// google sheets ui
/*
[A] [B]
[1] || ID || 1 ||
[2] || NAME || Elon ||
[3] || EMOJI || ???? ||
*/
Из того, что я собрал до сих пор, такая структура таблицы ключ-значение не подходит для чистой обработки листов Google. Например, с приведенными выше ячейками скрипты Google создают псевдо ассоциативный массив в виде диапазона , но отформатировано скобками строк google scripts и другими нюансами, такими как кавычки:
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 - Qaru > и Хеш-таблицы в 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"
[[ID, 1], [NAME, Elon], [EMOJI, ????]]
– это двухмерный массив Google script, состоящий из двух столбцов и трех строк. - person Cooper   schedule 24.01.2019for(var row=0; row<ioRange.length;++row) { ioObject[ioRange[row][0]]=ioRange[row][1]); }
- person Cooper   schedule 24.01.2019ioObject[ioRange[row][0]]=ioRange[row][1])
, что дало мне 90% результата, спасибо за это. Единственная оставшаяся проблема — цитирование… не могли бы вы помочь мне получить ключ и значения в двойных кавычках? В настоящее время результатомioObject
является:// => "{ID=1, NAME=Elon, Emoji=????}"
. - person TickTickTK   schedule 25.01.2019ioObject
должен иметь результат:// => “{‘ID’=1, ‘NAME’=‘Elon’, ‘Emoji’=‘????’}"
. ... или что-то похожее на это. Я попытался добавить их в виде строк с помощью методов «+»concat()
, но он продолжает его ломать. Очень ценю помощь @Tanaike и @Cooper :) - person TickTickTK   schedule 25.01.2019ioObject[ioRange[io][0]]=ioRange[io][1]
теперь отлично работает для меня ... ✅ обнаружение объектов js работает ... ✅ правильные двойные кавычки и ✅ поиск по ключу: значение работает отлично. Еще раз спасибо за помощь, это был мой первый вопрос о переполнении стека, опубликованный после того, как он скрывался в течение большей части десятилетия. Пожалуйста, не стесняйтесь опубликовать ответ @Cooper, я также отредактирую вопрос с расширенным решением для справки. ~~ привет! ???? - person TickTickTK   schedule 25.01.2019