javascript 将值从常规单元格设置到合并单元格

fcipmucu  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(147)

我正在尝试将常规单元格中的值设置到合并单元格中。目前,当我尝试将值设置到合并单元格中时,它只设置第一个值,并忽略其余值。

function generate(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s1 = ss.getSheetByName('Newsletters');
  var s2 = ss.getSheetByName('Sheet1');
  var lastRow = s1.getLastRow()*4;

for (var i = 5; i <= lastRow; i++) { // Start from row 5
  var country_src = s1.getRange([i], 10).getValues(); //Country
  var languages_src = s1.getRange([i], 9).getValues(); //Languages

  var country = s2.getRange([i], 1); //Country
  var languages = s2.getRange([i], 2); //Languages

      if (languages_src != '') {
        languages.setValue(languages_src);
        country.setValue(country_src);
      }     
  }

}

我想从这个开始:

对此:

目前它给我这个:

e4yzc0pl

e4yzc0pl1#

下面是一个生成所需结果的示例。我创建了一个与源代码类似的电子表格。

然后我创建一个脚本来获取源代码并生成结果。使用这个脚本,我得到每个单元格的valuescolors。然后我创建一个填充的results数组。注意,对于源代码的每一行,必须有4行或4个结果。

代码.gs

function createMergedCells() {
  try {
    let spread = SpreadsheetApp.getActiveSpreadsheet();
    let sheet = spread.getSheetByName("Sheet2");
    let range = sheet.getDataRange(); // no headers
    let values = range.getValues();
    let colors = range.getFontColors();
    sheet = spread.getSheetByName("Sheet3");
    let i = 1;
    let results = [];
    values.forEach( (row,index) => {
        if( row[0] !== "" ) {
          range = sheet.getRange(i,1,4,1)
          range.mergeVertically();
          range.setFontColor(colors[index][0]);
          range = sheet.getRange(i,2,4,1)
          range.mergeVertically();
          range.setFontColor(colors[index][1]);
          i = i + 4;
          results.push([row[0],row[1]]);
          results.push(["",""]);
          results.push(["",""]);
          results.push(["",""]);
        }
      }
    );
    range = sheet.getRange(1,1,results.length,2);
    range.setValues(results);
    range.setVerticalAlignment("middle");
    range.setHorizontalAlignment("center");
  }
  catch(err) {
    console.log(err);
  }
}

相关问题