【问题标题】:Condition to Run Macro based on Cell Value基于单元格值运行宏的条件
【发布时间】:2020-01-08 21:07:03
【问题描述】:

我正在尝试提出一个 IF 语句,该语句将根据一个单元格中的特定值触发我的宏运行。我的电子表格有很多标签。这是一个预测模板。

这是我想出的,但我的想法不多了..

function Sum_Calcs() {
   var spreadsheet = SpreadsheetApp.getActive();
   spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Integrity Check'), true);
   spreadsheet.getRange(K20).getValue(getActiveRange(), true);

if(activeRange === "1") {
}

//然后我的脚本位于下面//

非常感谢任何帮助!

【问题讨论】:

  • 只是为了澄清。如果我错了,请纠正我。您有一张电子表格,其中一张称为“完整性检查”,该表格上的单元格“K20”是关键单元格。当有人在电子表格中键入内容时,您要检查是否在 Cell K20 中输入了内容?如果是,那么您要检查 Cell K20 的值;如果“K20”=1,那么做某事;如果 K20 = 1,则什么也不做/别的什么。

标签: javascript if-statement google-sheets triggers google-sheets-macros


【解决方案1】:

你需要

  • 实现 onEdit 函数,以在每次更改“K20”中的值时重新评估 if 语句(请注意,只有在人工手动更改值时,它才会自动工作)
  • 如果满足您的条件,将在 if 语句中调用第二个函数(宏)

根据您上面的代码 sn-p,您需要更改一些内容:

  1. 当您使用方法getValue() 检索单元格的值时- 不要在方法的括号() 内指定任何参数。而是将此方法的返回值赋给一个变量
  2. 如果要检索某个工作表中的单元格值(或执行任何其他操作),请使用getSheetByName() 而不是setActiveSheet
  3. 要在if 语句中将实际值与整数(数字)进行比较,请使用if(activeRange == 1)
  4. 请注意,以 A1 表示法获取范围时,您需要使用引号 ("")

根据您的情况提供示例代码:

function myForecastMacro(){
  // specify here what shall happen if your "if" statement is fulfilled

function onEdit() {
   var spreadsheet = SpreadsheetApp.getActive();
   var sheet = spreadsheet.getSheetByName('Integrity Check');
   var activeRange=sheet.getRange("K20").getValue();
   if(activeRange == 1) {
     myForecastMacro();
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多