通过输入唯一 ID 将数据从其他电子表格获取到所需的单元格
Get data from other spreadsheet to the required cell by entering a unique ID
所以我在这里尝试自动化我的 google sheet。
- 我有一个 Google sheet,里面有 2 个 spreadsheets (i.Sheet, ii.Test_Form)
- 在“Sheet”上,我在 table 中有多个数据(订单日期、订单号、状态、产品、名称等)
- 我想转到“Test_Form”并将我的订单号放入一个单元格中,以便在指定的单元格中获取与该特定订单号相关的所有其他数据。
我不知道这是否可能。但我真的需要这个:(
感谢您的帮助。
根据 Harsh 对您 post 的评论,您需要单独 link 每个单元格。由于您的 sheet 上有很多内容实际上并未共享,因此我只能 post 这是一个示例代码,它实际上可以测试类似于您 post 的虚拟数据编辑以上。您只需修复单元格位置。
它有充足的文档,因此应该是可读的。
function onEdit(e) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// if cell being edited is B2 of test_form sheet
if(e.range.getColumn() == 2 && e.range.getRow() == 1 && spreadsheet.getActiveSheet().getName() == "test_form") {
// sheet containing data
var dataSheet = spreadsheet.getSheetByName("Sheet1");
// sheet form
var formSheet = spreadsheet.getSheetByName("test_form");
// last row of dataSheet
var lastRow = dataSheet.getLastRow();
// get data from A2:E, adjust to what your data needs
var sheetData = dataSheet.getRange("A2:E" + lastRow).getValues();
sheetData.forEach(function (row) {
// if B1 cell value after editing is found Sheet1 1st column
if(formSheet.getRange("B1").getValue() == row[0]){
// set value manually into test_form
formSheet.getRange("B2").setValue(row[1]); // copy 2nd column of matched row to B2
formSheet.getRange("B3").setValue(row[2]); // 3rd column to B3
formSheet.getRange("D1").setValue(row[3]); // 4th column to D1
formSheet.getRange("D2").setValue(row[4]); // 5th column to D2
// exit from function after finding the value
return;
}
});
// if not found, erase all data except entered value in B1
formSheet.getRange("B2").setValue("");
formSheet.getRange("B3").setValue("");
formSheet.getRange("D1").setValue("");
formSheet.getRange("D2").setValue("");
}
}
测试用例:
我还添加了一个机制,当找不到order number
时,它也会删除其他单元格的过去值。
所以我在这里尝试自动化我的 google sheet。
- 我有一个 Google sheet,里面有 2 个 spreadsheets (i.Sheet, ii.Test_Form)
- 在“Sheet”上,我在 table 中有多个数据(订单日期、订单号、状态、产品、名称等)
- 我想转到“Test_Form”并将我的订单号放入一个单元格中,以便在指定的单元格中获取与该特定订单号相关的所有其他数据。
我不知道这是否可能。但我真的需要这个:(
感谢您的帮助。
根据 Harsh 对您 post 的评论,您需要单独 link 每个单元格。由于您的 sheet 上有很多内容实际上并未共享,因此我只能 post 这是一个示例代码,它实际上可以测试类似于您 post 的虚拟数据编辑以上。您只需修复单元格位置。
它有充足的文档,因此应该是可读的。
function onEdit(e) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// if cell being edited is B2 of test_form sheet
if(e.range.getColumn() == 2 && e.range.getRow() == 1 && spreadsheet.getActiveSheet().getName() == "test_form") {
// sheet containing data
var dataSheet = spreadsheet.getSheetByName("Sheet1");
// sheet form
var formSheet = spreadsheet.getSheetByName("test_form");
// last row of dataSheet
var lastRow = dataSheet.getLastRow();
// get data from A2:E, adjust to what your data needs
var sheetData = dataSheet.getRange("A2:E" + lastRow).getValues();
sheetData.forEach(function (row) {
// if B1 cell value after editing is found Sheet1 1st column
if(formSheet.getRange("B1").getValue() == row[0]){
// set value manually into test_form
formSheet.getRange("B2").setValue(row[1]); // copy 2nd column of matched row to B2
formSheet.getRange("B3").setValue(row[2]); // 3rd column to B3
formSheet.getRange("D1").setValue(row[3]); // 4th column to D1
formSheet.getRange("D2").setValue(row[4]); // 5th column to D2
// exit from function after finding the value
return;
}
});
// if not found, erase all data except entered value in B1
formSheet.getRange("B2").setValue("");
formSheet.getRange("B3").setValue("");
formSheet.getRange("D1").setValue("");
formSheet.getRange("D2").setValue("");
}
}
测试用例:
我还添加了一个机制,当找不到order number
时,它也会删除其他单元格的过去值。