Есть ли чистый способ записи разреженной сетки в диапазон листов Google - PullRequest
0 голосов
/ 28 октября 2018

Я использую таблицы Google для хранения данных, которые обновляются из веб-приложения.

Я извлекаю все данные, используя getValues() на getDataRange() листа, например:

    // get reference to the data sheet
    var ss = _getPOMasterSpreadsheet();
    var shtData = ss.getSheetByName( "TestSheet11" );

    // obtain the grid
    var dataRange = shtData.getDataRange();
    var dataGrid = dataRange.getValues();

    var cols = dataGrid[0].length;
    var rows = dataGrid.length;

Иногда я расширяю данные, добавляя новые строки, но некаждый столбец в строке содержит данные, например:

    // create a new row and add it to the grid
    var newRow = new Array( cols );
    dataGrid.push( newRow );

    // write a value to the last cell of the new row
    newRow[ newRow.length-1 ] = "NEW LAST CELL" ;

Затем вновь расширенная сетка записывается обратно на лист с помощью setValues()

    // get the range to be updated and set values from the grid
    var newDataRange = shtData.getRange(1, 1, rows + 1, cols);
    newDataRange.setValues( dataGrid );

Это означает, что есть деталисетки, которые не имеют значения.Когда сетка записывается на лист, ячейки, соответствующие неопределенным значениям, заполняются текстом «NOT_FOUND» вместо того, чтобы быть пустым:

Undefined grid locations are filled with NOT_FOUND

IsЕсть ли способ получить эти неопределенные значения пустыми ячейками при обратной записи на лист?Я пытался избежать цикла, чтобы заполнить все неопределенные ячейки сетки строками нулевой длины.

1 Ответ

0 голосов
/ 28 октября 2018

как @ I '-' Я сказал мне fill недоступно в скрипте приложения.

Возможно, вы все еще можете использовать его на стороне клиента, так что вот что вы должны написать:

newRow.fill(""); // or 0

В таком случае, если вы пишете код на стороне сервера, я неВы не можете увидеть другие решения, кроме использования функции forEach:

   var newRow = new Array( cols );
   newRow.forEach(function(element, index)
   {
     newRow[index] = ""; // or 0
   });
   newRow[ newRow.length - 1] = "NEW LAST CELL" ;
   dataGrid.push( newRow );

Вы можете взглянуть на этот пост

ССЫЛКИ

array.forEach ()

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