首页 > 解决方案 > 功能:接收多个输入,并将它们添加到列中

问题描述

我是一个写谷歌表格功能的新手。我想实现以下目标:每次在提示窗口中插入值时,都应将值复制到 C 列中的第一个空单元格中。

此功能应重复执行,直到用户手动关闭提示窗口。

    function inserisciID()
{
 // Chiede il valore (asks for value)
 var ID =  SpreadsheetApp.getUi().prompt("Spara l'ID prodotto").getResponseText();
 //Inserisce l'ID nella prima cella vuota della colonna A 
//(finds a blank cell, but I don't know how to find it in the C column)
 var blank = dealCells.join().split(',');

for(var i = 0; i > 0; i++)
 {
    if (blank.indexOf("") != -1)  {
     cell.setValue(ID);
     i==-1;
  }
// I missed the 'else'
 }  
}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


解释:

我认为您的目标是输入一组逗号分隔值,并将这些值中的每一个附加到最后一个包含内容的单元格之后的 C 列。

  • 您不需要 for 循环来实现这一点。一旦用户输入逗号分隔值列表:test1,test1. 您用逗号分割这些值并创建所需的数组。由于您的目标是将数据附加到单个列中,因此您需要将此一维数组转换为以下形式的二维数组:[ [test1], [test2],..]。为此,您可以使用map函数:

    const input = ID.split(',').map(r=>[r]);
    
  • 计算完input数组后,您需要找到包含 C 列内容的最后一个单元格。为此,您可以使用filter函数:

    const start_row=sheet.getRange('C:C').getValues().filter(String).length + 1;
    
  • 最后,您可以使用setValues()有效地将所有值设置到 C 列:

    sheet.getRange(start_row,3,input.length,1).setValues(input);
    

解决方案:

function inserisciID(){
 const ID =  SpreadsheetApp.getUi().prompt("Spara l'ID prodotto").getResponseText();
 const input = ID.split(',').map(r=>[r]);
 const sheet = SpreadsheetApp.getActive().getActiveSheet();
 const start_row=sheet.getRange('C:C').getValues().filter(String).length + 1;
 sheet.getRange(start_row,3,input.length,1).setValues(input);
}

正如我在解释部分提到的,用户输入的值需要用逗号分隔:test1,test2,test3等。


推荐阅读