google-apps-script - 将单元格复制到另一个工作表的脚本,例如,基于单元格的背景颜色
问题描述
首先,我对 Google 表格和脚本完全陌生,所以我正在努力自学,如果我问的是“愚蠢”的问题,我很抱歉
所以我的问题是:我创建了一个脚本,基本上根据特定条件向单元格添加背景颜色。我现在想做的是识别所有添加了背景颜色的单元格,选择包含它们的整行并将所有信息复制到另一张表。
我试图用 if 条件来做,但我不知道如何选择整行,或者我用来获取背景颜色的条件是否正确。有谁能够帮我?太感谢了!
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Sheet1');
var r = s.getRange('F:F');
var v = r.getBackgrounds();
for(var i=v.length-1;i>=0;i--)
if(v =='B7E1CD')
s.getCurrentCell.copyTo(spreadsheet.getRange(20,1)); //don't mind this instruction, I know it isn't right
解决方案
解释:
您的目标是仅过滤F 列中背景颜色所在的行,'#b7e1cd'
并将这些值复制到不同的工作表中。
您不需要循环来实现此目标,您可以直接过滤 F 中背景颜色为 的行
'#b7e1cd'
。const new_values = values.filter((_,i)=>colors[i]=='#b7e1cd');
其中
values
定义为 的完整数据范围Sheet1
:const values = sh.getDataRange().getValues();
copyTo
如果您想在同一个电子表格文件中移动数据,您可以使用它。这就是为什么我更喜欢getRange/setValues
它,因为它没有这个限制。
解决方案:
以下脚本将从 的单元格开始粘贴A1
值Sheet2
。如果您想要不同的起始单元格,请修改1,1
为target_sh.getRange(1,1,..)
不同的单元格引用。
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1'); // put the name of the source sheet
const target_sh = ss.getSheetByName('Sheet2'); // put the name of the target sheet
const colors = sh.getRange('F1:F').getBackgrounds().flat();
const values = sh.getDataRange().getValues();
const new_values = values.filter((_,i)=>colors[i]=='#b7e1cd');
target_sh.getRange(1,1,new_values.length,new_values[0].length).setValues(new_values);
}
根据您的工作表更新代码:
function iftest() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('HH 2 - Main Database'); // put the name of the source sheet
const target_sh = ss.getSheetByName('HH 1 - New Database'); // put the name of the target sheet
const colors = sh.getRange('F1:F').getBackgrounds().flat();
console.log(colors);
const values = sh.getDataRange().getValues();
let LastRow = target_sh.getLastRow();
const new_values = values.filter((_, i) => colors[i]=='#ff6d01');
target_sh.getRange(LastRow+1,1,new_values.length,new_values[0].length).setValues(new_values);
}
推荐阅读
- python - 在 sqlalchemy 中更容易过滤任何内容的标志?
- linux-kernel - 无法访问地址处的内存 - RISCV gdb/Linux no KSLR
- python - Pygame 问题:我的玩家图像不会移动
- javascript - 有没有一种简单的方法来交换数组中的 0 和 1
- django - 如何解决 Django 类序列化程序断言错误
- google-sheets - Google sheets query & fix number of rows as result
- python - 用三个列表值填充文本每个列表项填充一个文本并在其上循环
- nestjs - NestJS 身份验证策略 - 它是如何访问的?
- python - 带有 Python Flask 的 OpenCV 如何从文件夹中读取图像并将它们流式传输到网站?
- javascript - 何时使用 Second Bracket 何时不在 javascript 中?