Google apps script Google脚本将不同列中的单元格连接起来

Google apps script Google脚本将不同列中的单元格连接起来,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,我有下面的场景,我想连接不同列中的单元格,但列的数量因情况而异 示例1:单元格A2中的值为70286,单元格B2中的值为playmobil。 F2中的最终结果应为+70286+playmobil 示例2:在单元格A4中有值70666,在单元格B4中有值lego,在单元格C4中有值ninjago。 F2的最终结果应该是+70666+乐高+ninjago 解决方案: 谷歌表单公式: function myFunction() { const sh = SpreadsheetApp.getActi

我有下面的场景,我想连接不同列中的单元格,但列的数量因情况而异

示例1:单元格A2中的值为70286,单元格B2中的值为playmobilF2中的最终结果应为+70286+playmobil

示例2:在单元格A4中有值70666,在单元格B4中有值lego,在单元格C4中有值ninjagoF2的最终结果应该是+70666+乐高+ninjago

解决方案: 谷歌表单公式:

function myFunction() {
  const sh = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  const row = 2;
  const data=sh.getRange(row,1,1,sh.getMaxColumns()).
                   getValues().
                   flat().
                   filter(c=>c!='').
                   reduce( (a, b) => `${a} +${b}`);      
  const result = `+${data}`;
  sh.getRange('F1').setValue(result);
  Logger.log(result);
}
您可以使用,如果您想在字符串前面加一个加号,可以使用来添加它

在F列中使用此公式:

=CONCAT("+",textjoin(" +", 1, A2:E2))


如果不知道要使用多少列,则可以选择整行:

=CONCAT("+",textjoin(" +", 1, A2:2))

谷歌应用程序脚本:

function myFunction() {
  const sh = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  const row = 2;
  const data=sh.getRange(row,1,1,sh.getMaxColumns()).
                   getValues().
                   flat().
                   filter(c=>c!='').
                   reduce( (a, b) => `${a} +${b}`);      
  const result = `+${data}`;
  sh.getRange('F1').setValue(result);
  Logger.log(result);
}
  • 我们使用数组获取第二行的数据作为二维数组
  • 然后我们将其转换为1D
  • 下一步是使用删除空单元格
  • 最后,我们使用获取最终字符串作为所有字符串的总和
逻辑很容易调整。您可以对多个单元格等执行此逻辑

代码片段:

function myFunction() {
  const sh = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  const row = 2;
  const data=sh.getRange(row,1,1,sh.getMaxColumns()).
                   getValues().
                   flat().
                   filter(c=>c!='').
                   reduce( (a, b) => `${a} +${b}`);      
  const result = `+${data}`;
  sh.getRange('F1').setValue(result);
  Logger.log(result);
}

谢谢你的回复。不幸的是,我想把它作为脚本编辑器的代码。同样在您的示例中,您使用A2:E2,但在我的整个工作表中,我并不总是知道需要连接多少列。如果您不知道有多少列,那么只需删除
E
。因此,请使用以下命令:
=CONCAT(“+”,textjoin(“+”,1,A2:2))
@GeorgeChalikiopoulos@GeorgeChalikiopoulos如果您想要一个脚本解决方案,那么您需要更加具体。您到底需要将输出数据放在哪里?输入数据的范围是多少?您想要预定义输入还是动态输入?但我看不出谷歌脚本有任何好处,因为它可以通过简单的公式快速实现。@GeorgeChalikiopoulos我添加了一个javascript(GAS)代码片段,如果你想看一下的话。