我有一个 Google 表格脚本,如果在另一张表格中满足条件,它会在一张表格的单元格中设置单元格的背景颜色
如果在“Client TDL”工作表上满足条件,它将更改“Client”工作表中指定单元格的背景。
这是我的代码:
function tasks() {
var sh1 = ss.getSheetByName("Client TDL");
var sh4 = ss.getSheetByName("Client");
var tasks1 = sh1.getRange("A2:C11").getValues();
for (var i = 0; i < tasks1.length; i++) {
if (tasks1[i][0] === 'Y')
{
var sh1Tasks1 = sh4.createTextFinder(tasks1[i][2]).findNext().getCell(1,1).
getA1Notation()
sh4.getRange(sh1Tasks1).offset(0,1).setBackground('#d9ead3')
}
}
我想达到的目标:
目前,该脚本仅适用于“Client”表和“Client TDL”表。
我想在两组纸上应用这个动作。第一组称为“Client Name”表,第二组称为“Client Name TDL”
所以我希望每个“客户名称 TDL”表在满足条件的情况下对每个“客户名称”表应用操作。
例如,如果客户名称是“X”。它将有一张名为“X”的工作表和另一张名为“X TDL”的工作表。如果在“X TDL”中满足条件,它将对工作表“X”进行更改。
知道“Client TDL Sheets”/“Client Sheets”对的数量是动态的,我如何在 Apps Script 中编写它?
这是示例电子表格: https://docs.google.com/spreadsheets/d/1mhMsTCyjWMWWkUF6INk0_XulNTjZLks1GpVZzdVJkyg/edit#gid=0
我保留了您的大部分工作代码并添加了一个简单的触发器
onEdit(e)
来动态确定sh0
的工作表及其相应的sh1
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh0 = e.range.getSheet();
var sh1 = ss.getActiveSheet();
if (sh0.getName() == 'Sheet1') {
sh1 = ss.getSheetByName("Sheet4");
}
else if (sh0.getName() == 'Sheet2') {
sh1 = ss.getSheetByName("Sheet5");
}
else if (sh0.getName() == 'Sheet3') {
sh1 = ss.getSheetByName("Sheet6");
}
//from original script:
var tasks1 = sh0.getRange("A2:C11").getValues();
var tasks2 = sh0.getRange("D2:F11").getValues();
var tasks3 = sh0.getRange("G2:I11").getValues();
var tasks4 = sh0.getRange("J2:L11").getValues();
var tasks5 = sh0.getRange("M2:O11").getValues();
for (var i = 0; i < tasks1.length; i++) {
if (tasks1[i][0] === 'Y') {
var sh1Tasks1 = sh1.createTextFinder(tasks1[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks1).offset(0, 1).setBackground('#d9ead3')
}
if (tasks2[i][0] === 'Y') {
var sh1Tasks2 = sh1.createTextFinder(tasks2[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks2).offset(0, 2).setBackground('#d9ead3')
}
if (tasks3[i][0] === 'Y') {
var sh1Tasks3 = sh1.createTextFinder(tasks3[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks3).offset(0, 3).setBackground('#d9ead3')
}
if (tasks4[i][0] === 'Y') {
var sh1Tasks4 = sh1.createTextFinder(tasks4[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks4).offset(0, 4).setBackground('#d9ead3')
}
if (tasks5[i][0] === 'Y') {
var sh1Tasks5 = sh1.createTextFinder(tasks5[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks5).offset(0, 5).setBackground('#d9ead3')
}
}
}
注意: 如果这是您第一次使用简单的触发器,您可能需要阅读这篇文章:Simple Triggers: onEdit。此外,您只需保存此脚本(假设您已授予脚本访问您的 Google 表格的权限)。运行它会导致错误。