使用应用程序脚本在 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)
}
输入
输出
首先,我是 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)
}
输入
输出