javascript - 谷歌应用程序脚本 : Sheets: Append data from an input range in Sheet1 to a dataset in Sheet2

标签 javascript google-apps-script google-sheets

我正在尝试在 google 电子表格中创建一个输入字段以启用简单的数据收集,但我在使用 for 循环时遇到了一些问题。我是 JS 新手,这是我第一次尝试使用 Google Apps 脚本。

应用逻辑: - 输入字段中的数据(“Sheet1!F13:F36”) - 单击分配了脚本的按钮 - 数据从输入字段加载并附加到 Sheet2 中的数据集

请看下面我的代码:

function appendToDB() {
  
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var dashboard = ss.getSheetByName("Dashboard");
 var inputRange = dashboard.getRange("F13:F36");
 var db =  ss.getSheetByName("Database");
 var storeName = dashboard.getRange("C7").getValue();
 var category = dashboard.getRange("C9").getValue();  
  
  for(var i=0; i<inputRange.length; i++){
   
   var currentCellValue = inputRange[i].getValue();
   
   db.appendRow([storeName,category,currentCellValue]);
  }
  
}

最佳答案

以下dashboard.getRange("F13:F36")函数返回一个范围类而不是数组。因此,当您尝试获取像这样的长度时,inputRange.length 会返回 undefined 并且循环永远不会运行。

您可以使用 getValues 获取单元格的值并在循环中遍历数组并将值附加到数据库表中,就像这样

function appendToDB() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var dashboard = ss.getSheetByName("Dashboard");
 var inputRange = dashboard.getRange("F13:F36").getValues();  //returns a 2D array
 var db =  ss.getSheetByName("Database");
 var storeName = dashboard.getRange("C7").getValue();
 var category = dashboard.getRange("C9").getValue();  

  for(var i=0; i<inputRange.length; i++){

   var currentCellValue = inputRange[i][0];

   db.appendRow([storeName,category,currentCellValue]);
  }

}

等效地,您可以使用 getNumRows()范围类的函数,用于获取行数。使用它作为计数器循环以通过 getCell(row,column).getValue() 获取单个单元格的单个值

看起来像这样:

function appendToDB() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var dashboard = ss.getSheetByName("Dashboard");
 var inputRange = dashboard.getRange("F13:F36");
 var db =  ss.getSheetByName("Database");
 var storeName = dashboard.getRange("C7").getValue();
 var category = dashboard.getRange("C9").getValue();  

  for(var i=1; i<=inputRange.getNumRows(); i++){

   var currentCellValue = inputRange.getCell(i,1).getValue();

   db.appendRow([storeName,category,currentCellValue]);
  }

}

关于javascript - 谷歌应用程序脚本 : Sheets: Append data from an input range in Sheet1 to a dataset in Sheet2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48325476/

相关文章:

google-apps-script - 导航Google Apps脚本的最佳实践

google-apps-script - 如何将字符串转换为数字

javascript - 从 gmail 中获取 html 表并使用 google apps 脚本放入 google 表格中

javascript - 如何将行添加到第一个空行?带有 Chrome 扩展的 Google 电子表格 API

javascript - 我将如何使用 alexa-sdk 在我的 Alexa 技能中使用 http?

javascript - 如果选择了文本并单击了下拉选项,则更改所选文本的颜色

google-apps-script - 您无权调用 setDataValidation

javascript - 是否有一个事件在编辑单元格时触发,但值没有改变?

java - Cloud Endpoint 参数不应命名

javascript - 从javascript中的字符串中删除 '<and text within those>'