Pu sh Обновления нескольких листов Google с основного листа - PullRequest
0 голосов
/ 17 марта 2020

Есть ли способ отсканировать несколько листов Google, чтобы найти совпадение из мастер-листа по ключу и обновить ячейки в листах Google, где это применимо?

Например, ниже у меня 4 листы. Первый - мастер, остальные - дети. Если есть совпадение в столбце A (Инициативное имя) на любом из листов от мастера, обновите ячейки в столбцах C (Сумма) и D (Дата), в противном случае оставьте листы нетронутыми. В этом примере мастер имеет имя инициативы «G» с суммой «50» и датой «1/1/2020». Ребенок 1 имеет Инициативное имя «G» и количество «30» и «3/1/2020». Я хочу сделать sh обновление для ребенка 1 и обновить только сумму и дату с тем, что есть у основного шаблона, оставляя все остальное в ребенке 1 тем же, а также не обновлять ребенка 2 или 3 (поскольку в Initiative нет совпадений Имя).

Мастер лист - 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

1 Ответ

1 голос
/ 18 марта 2020

Вы можете сделать что-то по следующим строкам (проверьте встроенные комментарии):

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

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...