使用onedit脚本切换列的格式

时间:2018-10-11 16:57:06

标签: google-apps-script google-sheets

我是Google应用程序脚本的新手。这是我的sample spreadsheet.,我正在尝试编写一个脚本,其中一个复选框可切换列的格式(公制/英制)。它仅适用于第一种情况,不适用于第二种情况。我不确定为什么(e.value == true / false)似乎不起作用。

function onEdit (e) {
  var Name = SpreadsheetApp.getActiveSheet().getName();
  Logger.log(Name)
  if (e.range.getA1Notation() === 'C19' && e.value == 'TRUE') {
    SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00oz")
  }
    else if (e.range.getA1Notation() === 'C19' && e.value == 'FALSE'){
      SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00g")
    }}

1 个答案:

答案 0 :(得分:1)

这是一个代码片段,可用于根据复选框输入更改列的格式:

  if (e.range.getA1Notation() == 'C19')
  { 
      if (e.value == 'TRUE') { 
          SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00lb");
      }
      else
     {
          SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00oz");
     }
  }

  if (e.range.getA1Notation() == 'C18'){

    if (e.value == 'TRUE') {
      SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat("##0.00gr");
    }
    else
    {
      SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat('##0.00"%"');
    }
  }

这允许更改列KL的格式。这仅出于说明目的,您还需要重新计算公制/英制重量等。

我猜想的主要问题是(e.value == true)应该是(e.value == 'TRUE')

另外,您可能需要使用SpreadsheetApp.getActiveSheet()而不是SpreadsheetApp.getActiveSpreadSheet()

注意:通过实验,我发现复选框返回的值似乎是字符串'TRUE''FALSE',而不是布尔值。因此,if(e.value)无法像您期望的那样测试布尔值true等。我愿意接受上级对此的更正,但是(e.value == 'TRUE')表格是我唯一可以做的表格。