![](/img/trans.png)
[英]Can I run function of multiple Google sheets from Master Google Sheet?
[英]Push Updates To Multiple Google Sheets From Master Sheet
有没有办法扫描多个 Google 表格以从主表格中的某个键中找到匹配项,并在适用的情况下更新 Google 表格中的单元格?
例如,下面我有 4 张纸。 第一个是主人,其他的是孩子。 如果主表中任何工作表的 A 列(初始名称)匹配,请更新列 C(金额)和 D(日期)中的单元格,否则保持工作表不变。 在此示例中,Master 的倡议名称为“G”,金额为“50”,日期为“4/1/2020”。 孩子 1 的倡议名称为“G”,金额为“30”,日期为“3/1/2020”。 我想将更新推送到 Child 1 并仅使用主模板所具有的内容更新 Amount 和 Date,同时使 Child 1 中的其他所有内容保持不变,并且也不更新 Child 2 或 3(因为倡议名称不匹配)。
主表 - https://docs.google.com/spreadsheets/d/18tWKLly6Hp6cF_9Qlqbjqq1OF0ix-FCR39i__gJyS7Q/edit#gid=0
儿童 1 - https://docs.google.com/spreadsheets/d/1FDGQapk5In8DLC6DnFSJjFHTIhe7mUFSPPz1j0mXHz0/edit#gid=0
儿童 2 - https://docs.google.com/spreadsheets/d/1mFiBIXt1xQntNXb9g2mWrBpc0saEpQu8ZHB-91l5Arw/edit#gid=0
孩子 3 - https://docs.google.com/spreadsheets/d/1teBZ85VcVAePD_e_vp1f4MMnbRTR6JoZWLfF4oZxmTc/edit#gid=0
您可以按照以下方式做一些事情(检查内联注释):
function updateChildren() {
var childrenIds = ["child1-id", "child2-id", "child3-id"]; // Array with the ids of the children, modify accordingly (can be more than 3)
var master = SpreadsheetApp.openById("master-id"); // Master id (modify accordingly)
var children = [];
var masterSheet = master.getSheetByName("Summary"); // Name of the Master sheet with data
// Get the source values in Master:
var firstRow = 2;
var firstCol = 1;
var numRows = masterSheet.getLastRow() - firstRow + 1;
var numCols = masterSheet.getLastColumn() - firstCol + 1;
var masterValues = masterSheet.getRange(firstRow, firstCol, numRows, numCols).getValues();
childrenIds.forEach(function(childId) { // Iterate through each children id
var childSheet = SpreadsheetApp.openById(childId).getSheetByName("Summary"); // Get sheet with data (sheet is named "Summary")
var childNumRows = childSheet.getLastRow() - firstRow + 1;
var childValues = childSheet.getRange(firstRow, firstCol, childNumRows, numCols).getValues(); // Get child values
masterValues.forEach(function(masterRow) { // Iterate through each row with data in Master
childValues.forEach(function(childRow, i) { // Iterate through each row with data in Child
if (masterRow[0] === childRow[0]) { // Check if there is a match in column A
childSheet.getRange(i + firstRow, 3, 1, 2).setValues([[masterRow[2], masterRow[3]]]); // Update columns C-D in Child
}
});
});
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.