[英]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.