簡體   English   中英

從母版向多個 Google 表格推送更新

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM