【问题标题】:How can I return data from more than one cell in Google Sheets Apps Script?如何从 Google Sheets Apps 脚本中的多个单元格返回数据?
【发布时间】:2022-01-01 12:58:27
【问题描述】:

所以我目前正在使用 Google 表格作为我正在制作的费用跟踪器。

Here is an example

目前,我可以通过这个功能显示超过100的费用;

function MORETHANONEHUNDRED(values)
{
  let myArray= [];
  for(let i =0; i<values.length; i++)
  {
    let num = parseInt(values[i]); 
    if(num>100)
    {
      myArray.push(num); 
    }
  }

  return "Here is your array " + myArray; 
}

但是,这仅显示数字,而我还希望显示服装品牌。如果费用超过100,我将如何将费用以及对应的服装品牌显示给用户?

谢谢!

【问题讨论】:

  • 在您的情况下,您如何运行脚本?例如,我认为当您将脚本作为自定义函数运行时,例如,像=FILTER(A2:B,A2:A&gt;100) 这样的内置公式可能也可以使用。所以我询问了运行脚本的方法。例如,当您想使用 Google Apps 脚本实现目标时,const MORETHANONEHUNDRED = v =&gt; v.filter(([a]) =&gt; a &gt; 100); 怎么样?在这种情况下,将=MORETHANONEHUNDRED(A2:B)放到一个单元格中,就可以得到结果。如果我误解了您的问题,我深表歉意。
  • @Tanaike 感谢您的回复。所以目前运行该函数的方式是简单地将=MORETHANONEHUNDRED( 放入一个单元格中,选择值并单击回车。在单元格中,用户将看到“这是您的数组”+ values>100。我也很抱歉,因为我是初学者,对 JS 不太了解。我通过教程构建这个项目。我仍然对如何解决我的问题感到困惑。在我的函数中我应该把const MORETHANONEHUNDRED = v =&gt; v.filter(([a]) =&gt; a &gt; 100); 放在哪里?非常感谢!
  • 为什么不直接使用tanaike提供的过滤公式?
  • 您也可以使用查询原生函数代替脚本。
  • @TheMaster 你好,谢谢你的回复。我对评论有点困惑,我刚试过=FILTER(A2:B,A2:A&gt;100),效果很好。但是,这将使我的客户必须手动输入范围..等。在我的帖子中,我包含的代码 sn-p 允许客户端简单地输入=MORETHANONEHUNDRED(,选择值,然后单击回车,这将为他们提供返回语句。我想做一个功能,客户端可以在不输入=FILTER(A2:B,A2:A&gt;100) 中的范围的情况下完成相同的功能。如果我说的内容令人困惑且没有意义,请道歉。

标签: google-apps-script google-sheets google-sheets-formula


【解决方案1】:

如果您有兴趣在对话框中显示当前选定的电子表格范围:

function dispssdata() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  const rg = sh.getActiveRange();
  const vs = rg.getDisplayValues();
  let html = '<style>td{border:1px solid black;text-align:center;padding:1px 2px}</style><table>'
  vs.forEach((r,i) =>{
    html += '<tr>';
    r.forEach((c,j) => {
      html+= `<td>${c}</td>`
    });
    html += '</tr>'
  })
  html += '</table>'
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html),'Display Active Range');
}

有效范围:

对话框:

【讨论】:

    【解决方案2】:

    为了回答我的问题,下面这行代码可以让我完成我想要的:

    const MORETHANONEHUNDRED = v => v.filter(([a]) => a > 100);
    

    感谢@Tanaike's comments 的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      相关资源
      最近更新 更多