Javascript 循环Google工作表-仅返回最后一行

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',

有人知道为什么当这个函数运行时,它只导出提要数组的最后一行吗

这是我一直坚持的代码段,“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); 
      }
     };
  };

}
----------
函数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;imsgObj[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举个例子,下面是结果