Деконструкция 2D массива в скрипте Google Apps - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь деструктурировать двумерный массив в скрипте Google Apps, и он остается неизменным.

Я нашел ссылку, объясняющую, как деструктурировать массив в скрипте приложений Google, аналогично синтаксису для javascript es6.

Ссылка https://plus.google.com/u/0/+DimuDesigns/posts/9FDJx2qe4gZ

Пример, который они приводят, прекрасно работает для меня как отдельная функция.

function readData() {
  var id = '1P4aVeFJMT9e0ijoFt262IuLlnjHte8hl2iUeU_kk-AQ'; //ID of the 
projects spreadsheet
  var ass = SpreadsheetApp.openById(id); //Initilize spreadsheet
  var sheet = ass.getSheetByName('Sheet1'); //Get sheet instence

  var row1data = sheet.getRange('A1:F1').getValues();

  [a1, b1, c1, d1, e1, f1] = [row1data];  

  //DEBUG
  Logger.log(a1);
}

ожидаемый вывод в журнал должен быть данными в ячейке A1, которая является первым элементом в массиве.

фактическим выводом является сам массив.

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

1 Ответ

0 голосов
/ 23 января 2019

Как насчет этой модификации? Я думаю, что в вашем скрипте 2 ошибки.

  1. Когда значения "a1", "b1", "c1", "d1", "e1" и "f1" помещаются в ячейки "A1: F1", row1data извлекается var row1data = sheet.getRange('A1:F1').getValues() похоже на [["a1","b1","c1","d1","e1","f1"]]. Это двумерный массив.

  2. Необходимо объявить переменные a1, b1, c1, d1, e1, f1 из [a1, b1, c1, d1, e1, f1].

Когда указанные пункты отражаются в вашем сценарии, он становится следующим.

Модифицированный скрипт:

Пожалуйста, измените следующим образом.

От:
[a1, b1, c1, d1, e1, f1] = [row1data];  

//DEBUG
Logger.log(a1);
Для того, чтобы:
var a1, b1, c1, d1, e1, f1;
[a1, b1, c1, d1, e1, f1] = row1data[0];

//DEBUG
Logger.log(a1);

Примечание:

  • Также вы можете использовать [[a1, b1, c1, d1, e1, f1]] = row1data вместо [a1, b1, c1, d1, e1, f1] = row1data[0].
  • Например, если в вашем скрипте используется [row1data], он становится [[[a1, b1, c1, d1, e1, f1]]] = [row1data].

Справка:

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