2 Tải lên một tờ khác với điều kiện

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi cần hỗ trợ với dự án của mình. Mục tiêu kết thúc là để người dùng chọn các ô liên tiếp và sau đó có thể sử dụng nút để tải dữ liệu đó lên một trang tính khác. Khi tải lên tôi muốn khớp trên một ô cụ thể và điền vào các ô trống cụ thể trên hàng đó. Nếu nó không tìm thấy kết quả khớp, tôi cần nó để tạo một mục mới.

Ý tưởng là có nhiều trang tính mà nhóm sử dụng, mỗi trang tính có cùng loại nhưng chỉ có một số ô nhất định được điền vào mỗi trang. Vì vậy, chúng tôi muốn kết hợp tất cả dữ liệu trong một trang tính để bạn không cần phải xem một loạt các trang tính khác nhau để có được tất cả dữ liệu. Ví dụ: ID sản phẩm 123456 hiện diện trong bản chính vì vậy khi người dùng tải lên dữ liệu với ID sản phẩm đó, nó sẽ thêm thông tin như trọng lượng, chiều cao, v.v. vào các ô thích hợp trong hàng đó. Nếu người dùng tải lên ID sản phẩm 654321 và nó không có trong bản chính thì nó sẽ tạo ra một dòng mới với dữ liệu được chọn và đưa vào các ô thích hợp.

Vì vậy, ngay bây giờ tôi có nó tải mọi thứ lên một bảng chính mà không cần kiểm tra bất kỳ ID sản phẩm nào. Mỗi khi nó tạo ra một mục mới mọi lúc. Tôi cần nó để kiểm tra dữ liệu ô cụ thể và nếu nó hiện diện trong bản gốc thì không thêm dữ liệu vào một dòng mới, thay vào đó, hãy thêm dữ liệu vào hàng đó trong ô thích hợp.

cho đến nay nó khá đơn giản:

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
  });
};    

Đây là hình ảnh của Bảng tải lên: bảng tải lên Trong đó chỉ có một mục để tải lên với mã sản phẩm là 1 Vì vậy, những gì tôi cần là cho nó tìm kiếm mã chính cho mã sản phẩm phù hợp và thêm thông tin nếu có và nếu không tạo mục nhập mới với mã sản phẩm đó.

    
0
2 Câu trả lời                              2                         

Hãy thử điều này:

function moveSelectedData(){
  var css=SpreadsheetApp.getActive();
  var csheet=css.getSheetByName("Sheet1"); 
  var cdata=csheet.getActiveRange().getValues();
  var mss = SpreadsheetApp.openById('ssid');
  var msheet = mss.getSheets()[0];//first sheet on the left
  msheet.getRange(msheet.getLastRow()+1,1,cdata.length,cdata[0].length).setValues(cdata);
}
    
0
2019-05-08 17: 01: 42Z
  1. Cảm ơn! Cuối cùng tôi đã nhận được một chút khác biệt: var sRows = csheet.getActiveRange (). GetLastColumn (); //lấy giá trị của cột cuối cùng được chọn, bây giờ tôi cần khớp trên một ô nhất định và thêm dữ liệu vào hàng nếu có và nếu không tạo mục nhập mới
    2019-05-08 17: 19: 30Z

Vấn đề là các chỉ mục trên msheet.getRange(maxIndex + 2, 1, 1, 1)

Hai cuối cùng là kích thước của phạm vi. Sử dụng 1,1 giới hạn phạm vi là 1 hàng x 1 cột = 1 ô.

    
0
2019-05-08 17: 14: 32Z
  1. Vâng, đây là vấn đề ban đầu của tôi! Nhưng cuối cùng tôi đã giải quyết nó bằng cách này: var sRows = csheet.getActiveRange (). GetLastColumn (); //lấy giá trị của cột cuối cùng được chọn và sử dụng sRows: msheet.getRange (max Index + 2, 1, 1, sRows). Bây giờ tôi cần khớp trên một ô cụ thể và thêm thông tin nếu có và nếu không tạo mục mới (như tôi có bây giờ)
    2019-05-08 17: 20: 20Z
  2. @ dukereuchre Câu hỏi trên trang web này phải cụ thể và giới hạn trong một câu hỏi. Tôi đề nghị bạn đăng câu hỏi tiếp theo.
    2019-05-08 17: 22: 57Z
  3. không sao, hãy đăng bài mới! Cảm ơn bạn!
    2019-05-08 17: 36: 54Z
nguồn đặt đây