Кто-нибудь знает, почему, когда эта функция запускается, она экспортирует только последнюю строку массива каналов?
Это фрагмент, на котором я застрял, 'j' он повторяется нормально, но значение, которое я установил «messExSheet» всегда является последней строкой.
msgObj[curCol].push(curCel)
messString = JSON.stringify(msgObj);
messExSheet.getRange(j, 1).setValue(messString);
Ищем первую строку и используем ее в качестве ключа объекта, как показано ниже
var Row_1 = ['r1-c1', 'r1-c2', 'r1-c3'];
var Row_2 = ['r2-c1', 'r2-c2', 'r2-c3'];
var Row_3 = ['r3-c1', 'r3-c2', 'r3-c3'];
//Out put
[{"r1-c1":["r2-c1"]}, {"r1-c2":["r2-c2"]}, {"r1-c3":["r2-c3"]}]
[{"r1-c1":["r3-c1"]}, {"r1-c2":["r3-c2"]}, {"r1-c3":["r3-c3"]}]
Полная функция ниже
----------
function messageToJSON(){
var sheetName = 'sheet';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
var rangeData = sheet.getDataRange();
var lastColumn = rangeData.getLastColumn();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange(1,1, lastRow, lastColumn)
var rangeValues = searchRange.getValues();
var messExSs = SpreadsheetApp.getActiveSpreadsheet();
var messExShName = 'messageExport';
var messExSheet = messExSs.getSheetByName(messExShName);
var msgObj = {};
var result = [];
var curCel = [];
var messString = '';
for ( i = 0; i < lastColumn; i++){ // columes ➔
var curCol = rangeValues[0][i];
msgObj[curCol] = [];
for (j = 1 ; j < lastRow; j++){ // rows ⬇︎ //
msgObj[curCol] = [];
curCel = [];
curCel = rangeValues[j][i];
if(!(curCel === "")){
msgObj[curCol].push(curCel)
messString = JSON.stringify(msgObj);
messExSheet.getRange(j, 1).setValue(messString);
}
};
};
}