簡體   English   中英

使用 Google Apps 腳本代碼根據條件查找和替換

[英]Find and replace based on criteria with Google Apps Scripts Code

我在同一個電子表格 object 中有兩個 Google 表格,作為參考,我將它們稱為數據和更改日志。

Data Sheet

ID   Country   Attribute   Value
1    USA       X           100
2    RUS       X           77
3    MEX       Y           32
4    GER       Z           111
...
Change-Log Sheet

Country   Attribute   Value
USA       X           84
GER       Z           97
Updated Data Sheet

ID   Country   Attribute   Value
1    USA       X           84
2    RUS       X           77
3    MEX       Y           32
4    GER       Z           97
...

目前我正在通過 API 進入數據表,該數據表每月清除和更新。

理想情況下,我想編寫某種幫助程序 function,它可以查詢數據表以獲取兩個表之間共享的條目,並用更改日志中的相應值覆蓋數據表中的值。

在上面的示例中,我想查詢 Country 和 Indicator 變量在哪里相同,然后比較 Value 變量並通過在適當的地方將該值覆蓋到數據表中來優先選擇 Change-Log.Value 條目。

我們對您的床單外觀和您想要做什么的信息很少。 你可以這樣做:

function test() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  const dataSheet = ss.getSheetByName("Data");
  const dataRange = dataSheet.getRange(2, 1, dataSheet.getLastRow() - 1, 4);
  const dataValues = dataRange.getValues(); // Get at once, faster execution

  const changeLogSheet = ss.getSheetByName("Change-Log");
  const replacements = changeLogSheet.getRange(2, 1, changeLogSheet.getLastRow() - 1, 3).getValues(); // Faster

  const newValues = [];
  dataValues.forEach(row => {
    const replacementValue = getReplacementValue_(row[1], row[2], replacements);
    newValues.push([row[0], row[1], row[2], (replacementValue ? replacementValue : row[3])]);
  });

  dataRange.setValues(newValues); // Faster
}

function getReplacementValue_(country, attribute, replacements) {
  const matchingRows = replacements.filter(row => row[0] == country && row[1] == attribute);
  return matchingRows.length > 0 ? matchingRows[0][2] : null;
}

我不確定您是要每次都覆蓋所有數據,還是從某行開始。

注意 1:如果您的問題是“這是我的目標和代碼到目前為止,這些是錯誤和問題”的形式,Stack Overflow 社區將能夠為您提供更多幫助。 如果您問“如何做某事”,我們將無法為您提供太多幫助。

注意2:如果某些答案對您有幫助,請投票/接受。 如果沒有,請編輯您的問題以提供更多信息。 在這種情況下,如果您可以制作一份工作表副本(如果數據敏感,則用模擬數據替換)並與互聯網上的任何人共享並在您的問題中發布鏈接,那將是一件好事。 諸如“數據”表、“更改日志”表和“所需數據”表之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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