使用应用程序脚本在 Google 个工作表中进行交叉查找

Cross lookup in Google sheets using appscript

首先,我是 appscript 的新手。

我正在尝试提取基于颜色单元格的数据并映射到相应的单元格数据。

https://docs.google.com/spreadsheets/d/12spiCq7bKaqfzTZ4tYrFFAfPyo8l4wZFtyCsZBhns7E/edit#gid=0

我的 A 列有所有日期。 第 1 行具有各自的名称。 B2:E 的范围包含突出显示单元格的其他数据。

我能够 运行 appscript 在我的目的地 sheet 中获取彩色单元格值。但是,我正在尝试获取相关突出显示单元格

的其他信息

假设如果单元格 B4 有一条消息,那么我的输出 sheet 应该由 B4、A4、B1 单元格组成

这是我正在尝试的脚本:

function myFunction() {
  const srcSheetName = "Source"; 
  const dstSheetName = "Calendar"; 
  const checkColor = "#ffff00"; 

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const [src, dst] = [srcSheetName, dstSheetName].map(s => ss.getSheetByName(s));

  const srcRange = src.getDataRange();
  const backgrounds = srcRange.getBackgrounds();

  const values = srcRange.getValues().reduce((ar, r, i) => {
    r.forEach((c, j) => {
      if (backgrounds[i][j] == checkColor) {
        ar.push([c]);
      }
    });
    return ar;
  }, []);
  
  dst.getRange(2, 1, values.length).setValues(values).setBackground("#FFFFFF");
}

请看看你能不能帮我解决这个问题。

提前致谢。

尝试

function myFunction() {
  const srcSheetName = "Source";
  const dstSheetName = "Calendar";
  const checkColor = "#ffff00";

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const [src, dst] = [srcSheetName, dstSheetName].map(s => ss.getSheetByName(s));

  const srcRange = src.getDataRange();
  const backgrounds = srcRange.getBackgrounds();
  const data = srcRange.getValues()

  const result = data.reduce((ar, r, i) => {
    r.forEach((c, j) => {
      if (backgrounds[i][j] == checkColor) {
        ar.push([data[i][0], c, data[0][j]]);
      }
    });
    return ar;
  }, []);

  dst.getRange(2, 1, result.length, result[0].length).setValues(result)
}

输入

输出