应用程序脚本:如果工作表 A、B、C 满足条件,则对工作表 X、Y、Z 应用操作

问题描述 投票:0回答:1

我有一个 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

google-apps-script google-sheets
1个回答
0
投票

建议:使用onEdit(e)函数

我保留了您的大部分工作代码并添加了一个简单的触发器

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 表格的权限)。运行它会导致错误。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.