For loop 如何重复值直到下一个非空行,然后重复下一行';谷歌应用程序脚本中的数据等?

For loop 如何重复值直到下一个非空行,然后重复下一行';谷歌应用程序脚本中的数据等?,for-loop,google-apps-script,google-sheets,For Loop,Google Apps Script,Google Sheets,这里的挑战是捕获客户ID及其名称,并在下面重复,直到脚本到达下一个非空行。然后,将重复下一个ID和客户名称 这就是我自己已经走了多远,但我无法构建我自己的逻辑核心(是的) 函数repeatValues(){ const ss=SpreadsheetApp.getActiveSpreadsheet(); const sheet=ss.getSheetByName(“Sheet1”); const originData=sheet.getRange(6,1,sheet.getLastRow(),3)

这里的挑战是捕获客户ID及其名称,并在下面重复,直到脚本到达下一个非空行。然后,将重复下一个ID和客户名称

这就是我自己已经走了多远,但我无法构建我自己的逻辑核心(是的)

函数repeatValues(){
const ss=SpreadsheetApp.getActiveSpreadsheet();
const sheet=ss.getSheetByName(“Sheet1”);
const originData=sheet.getRange(6,1,sheet.getLastRow(),3).getValues();
const targetSheet=ss.getSheetByName(“Sheet2”);
对于(var a=0;a
以下是指向示例电子表格的链接:

预期结果包括以蓝色重复显示的这些值:


感谢您的帮助

我相信你的目标如下

  • 您希望实现以下情况。(下图来自您的问题。)您想添加蓝色字体颜色的文本

  • 您希望将值放入“Sheet2”

修改点:
  • 在脚本中,位于
    const originData=sheet.getRange(6,1,sheet.getLastRow(),3).getValues(),起始行为
    6
    。在这种情况下,请将
    sheet.getLastRow()
    修改为
    sheet.getLastRow()-5
  • 为了创建用于放入“Sheet2”的数组,需要检查“Sheet1”的“A”和“B”列。为此,在这次修改中,我使用了
    temp
    ,如下所示
当上述各点反映到脚本中时,它将变成如下所示

修改脚本: 注:
  • 此修改后的脚本适用于示例电子表格。因此,当电子表格的结构发生更改时,脚本可能无法使用。请小心这个
参考:

不幸的是,从您的问题和示例电子表格中,我无法理解您当前的问题和目标。我为此道歉。我能问一下他们的细节吗?嗨,塔奈克!救世主!我已经包含了上面的预期结果。感谢您的回复和添加更多信息。根据您的补充信息,我建议修改脚本作为答案。你能确认一下吗?如果我误解了你的目标,我道歉。这正是我所需要的。我在网上看过你的个人资料,我认为你的工作为成千上万的人做出了贡献。非常感谢迄今为止帮助我的角色!祝你一切顺利!你又有一个巴西球迷@安东尼奥·桑托斯感谢您的回复和测试。我为此感到荣幸。另外,我很高兴你的问题得到了解决。也谢谢你。
function repeatValues() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("Sheet1");
  const originData = sheet.getRange(6, 1, sheet.getLastRow(), 3).getValues();
  const targetSheet = ss.getSheetByName("Sheet2");

  for (var a = 0; a < originData.length; a++) {
      if (originData[a][0] != ''){
        var customerID = originData[a][0];
        var customer = originData[a][1];
      }
      if (originData == ''){
        targetSheet.getRange(2,1,originData.length, originData.length).setValue(customerID);
      }        
      }
  }
function repeatValues() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("Sheet1");
  const originData = sheet.getRange(6, 1, sheet.getLastRow() - 5, 3).getValues(); // Modified
  const targetSheet = ss.getSheetByName("Sheet2");
  
  // I added below script.
  let temp = ["", ""];
  const putValues = originData.map(([a, b, c]) => {
    if (a.toString() && b.toString() && temp[0] != a && temp[1] != b) {
      temp = [a, b];
    }
    return temp.concat(c);
  });
  targetSheet.getRange(2, 1, putValues.length, putValues[0].length).setValues(putValues);
}