【发布时间】:2019-05-08 16:15:17
【问题描述】:
我的项目需要帮助。最终目标是让用户连续选择单元格,然后能够使用按钮将该数据上传到另一个工作表中。上传时,我想匹配特定单元格并填写该行上的特定空白单元格。如果找不到匹配项,我需要它来创建一个新条目。
这个想法是团队使用多张工作表,每张工作表都有相同的类别,但每张工作表中只填写了某些单元格。因此,我们希望将所有数据合并到一张表中,这样您就无需查看一堆不同的表来获取所有数据。例如,产品 ID 123456 存在于主数据中,因此当用户上传具有该产品 ID 的数据时,它会将体重、身高等信息添加到该行的相应单元格中。如果用户上传的产品 ID 为 654321,但它不存在于 master 中,那么它将创建一个新行,其中包含选定的数据并放入相应的单元格中。
所以现在我可以将所有内容上传到主表,而无需检查任何产品 ID。每次它每次都会创建一个新条目。我需要它来检查特定的单元格数据,如果它存在于主单元格中,则不要在新行中添加数据,而是将数据添加到相应单元格中的该行。
到目前为止,这很简单:
function uploadData(){
var css = SpreadsheetApp.getActiveSpreadsheet(); //setup current spreadsheet
var csheet = css.getSheetByName("Sheet1") //setup current sheet
var cdata = csheet.getActiveRange().getValues(); //get selected data values
var sRows = csheet.getActiveRange().getLastColumn(); //get the value of the last column selected
var mss = SpreadsheetApp.openById('1N5Orl2fQvmFmK63_y78V2k7jzBUYOjDxhixMSOCU7jI'); //open mastersheet for adding data
var msheet = mss.getSheets()[0]; //get the sheet
var mfindnextrow = msheet.getRange('A:A').getValues(); //get the values
//this next code i found online, this allows me to insert new data on a new row without any data present
var maxIndex = mfindnextrow.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
//start looping through the row
cdata.forEach(function(row){
msheet.setActiveRange(msheet.getRange(maxIndex + 2, 1, 1, sRows)).setValues(cdata); //put the data into the mastersheet
});
};
这是上传工作表的图片: uploadsheet 在此只有一件商品要上传,产品代码为 1 所以我需要它在 master 中搜索匹配的产品代码并添加信息(如果存在),如果没有,则使用该产品代码创建一个新条目。
【问题讨论】:
标签: javascript arrays google-apps-script google-sheets