Javascript 循环Google工作表-仅返回最后一行
有人知道为什么当这个函数运行时,它只导出提要数组的最后一行吗 这是我一直坚持的代码段,“j”表示迭代很好,但我在“messExSheet”上设置的值始终是最后一行Javascript 循环Google工作表-仅返回最后一行,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,有人知道为什么当这个函数运行时,它只导出提要数组的最后一行吗 这是我一直坚持的代码段,“j”表示迭代很好,但我在“messExSheet”上设置的值始终是最后一行 msgObj[curCol].push(curCel) messString = JSON.stringify(msgObj); messExSheet.getRange(j, 1).setValue(messString); 希望获得第一行,并将其用作如下所示的对象键 var Row_1 = ['r1-c1', 'r1-c2',
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);
}
};
};
}
----------
函数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结果=[];
var curCel=[];
var messtring='';
对于(i=0;i
根据您共享的代码,它总是设置最后一行,因为您正在为每个迭代J重置msgObj[curCol]
for(i=0;i msgObj[curCol]=[];您在每次迭代中都将messtring设置为一个新值。您的意思是不是类似于messtring+=JSON.stringify(msgObj);
?另外,msgObj[curCol]=[];当您一直用msgObj[curCol]=[]清除它时,
?@PalleDue for'msgObj[curCol]=[];'我需要当前列作为尝试实现此结果的对象的键名,在下面的示例中,'r1-c1'将是curCol.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[{'r1-c1'],{'r1-c1'},{'r1-c2'],{'r1-c3'][{“r1-c1”:[“r3-c1”]},{“r1-c2”:[“r3-c2”]},{“r1-c3”:[“r3-c3”]}]嘿,Allabakash,如果我删除这一行,我怎么会有一个第一行列的键具有相应行号值的对象呢?嗨@JohnParrott,因为你已经在I forloop下初始化了,你不需要在j for loop中进行初始化。其他方面,它会为每个j值重置。我打开了另一张罚单,更详细地解释了我的目标l举个例子,下面是结果