在GAS中连接返回的值,输出到电子表格单元格?

时间:2014-01-20 20:42:14

标签: google-apps-script google-sheets string-concatenation

请帮助G.A.S.新手出来!我有一个我正在使用的电子表格,我从电子表格的一个单元格触发这个脚本并让它分析另一个列。我一直在使用它只是返回我希望它放在分析列中的关键字,但我的一些数据将有多个关键字。

在我看来,最简单的方法就是简单地连接 - 将相关的新关键字添加到当前电子表格单元格中。但是,我找不到关于连接返回值的更多信息。我是否需要创建一个数组或其他东西来促进这一点,然后让它在整个脚本运行后将数组作为字符串返回?

这是我正在使用的代码:

function proteins(inCell){
      if(inCell.toString().match('chicken') == 'chicken') {
        return 'chicken';}
  else if(inCell.toString().match('mortadella') == 'mortadella') {
    return 'pork';}
     else if(inCell.toString().match('beef') == 'beef') {
        return 'beef';}
      else if(inCell.toString().match('pork') == 'pork') {
        return 'pork';}
      else if(inCell.toString().match('ham') == 'ham') {
        return 'pork';}
  else {return 'something else';}
}

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

问题在于,当您使用return 'pork'或任何return时,您的函数实际返回,即退出函数并且从不检查其他条件。 解决方案很简单:使用单独的变量来连接结果并在函数末尾返回该变量。 像这样:

function proteins(inCell){
  var result = '';    
  if(inCell.toString().match('chicken') == 'chicken') {
    result += 'chicken';}
  else if(inCell.toString().match('mortadella') == 'mortadella') {
    result += 'pork';}
  else if(inCell.toString().match('beef') == 'beef') {
    result += 'beef';}
  else if(inCell.toString().match('pork') == 'pork') {
    result += 'pork';}
  else if(inCell.toString().match('ham') == 'ham') {
    result += 'pork';}
  else {result += 'something else';}
  return result;
}

这将返回放在一起的所有有效字符串,您可能希望添加分隔符以便于阅读,然后只需在添加的每个项目后添加逗号或连字符...

如果您真的希望它是完美的,请在使用简单的javascript字符串函数返回结果之前删除最后一个逗号。请参阅文档here for example