Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用OneEdit脚本切换列的格式_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用OneEdit脚本切换列的格式

Google apps script 使用OneEdit脚本切换列的格式,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我不熟悉谷歌应用程序的脚本。这是我的脚本,我正在尝试编写一个脚本,其中一个复选框切换列的格式(公制/英制单位)。它只适用于第一种情况,而不适用于第二种情况。我不知道为什么(e.value==true/false)看起来不起作用 function onEdit (e) { var Name = SpreadsheetApp.getActiveSheet().getName(); Logger.log(Name) if (e.range.getA1Notation() === 'C19'

我不熟悉谷歌应用程序的脚本。这是我的脚本,我正在尝试编写一个脚本,其中一个复选框切换列的格式(公制/英制单位)。它只适用于第一种情况,而不适用于第二种情况。我不知道为什么(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")
    }}

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

  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"%"');
    }
  }
这允许更改cols
K
L
的格式。这只是为了说明,您还需要重新计算公制/英制重量等

我猜您遇到的主要问题是
(e.value==true)
应该是
(e.value==true)

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


注意:通过实验,我发现复选框返回的值似乎是字符串
'TRUE'
'FALSE'
,而不是布尔值。因此,如果(e.value)不能像您预期的那样测试布尔值
true
等。我愿意接受上级的纠正,但是
(e.value==“TRUE”)
表格是我唯一可以使用的表格

第一种情况是(e.value==true),它成功地将格式更改为“0.00oz”,但在(e.value==false)的情况下不起作用。使用
电子表格中的
getRange
和不包含工作表规范的字符串意味着这将仅格式化第一张工作表,即使您编辑了不同的工作表。您可以从编辑触发器的事件对象中获取编辑过的工作表,或者在我测试它时,从
getActiveSheet
中,
SpreadsheetApp.getActiveSheet().getName()
成功地返回我当前编辑的工作表的正确名称。所以我希望,
SpreadsheetApp.getActiveSheet().getRange
可以工作。我还尝试将电子表格的名称附加到以下范围:
“&name&”!K2:K89“
但这似乎也不起作用。嘿,谢谢你的回复!它现在起作用了。你是对的-复选框的值没有返回布尔值。我尝试了(e.value==true)和(e.value==true),但它只对(e.value='true'起作用)。非常感谢!最后一件事,我的脚本似乎只适用于一个电子表格,我不知道为什么。如果我使用
Logger.log(SpreadsheetApp.getActiveSheet().getName())
它获取正确的活动工作表,但不设置列的格式。好的,太好了。如果您接受答复,这样问题就可以结束,这对每个人都有好处。单击答复左上角投票向上/向下箭头下的勾号。如果您愿意,也可以向上投票。这两个都不是必须的,我应该添加!关于仅工作o有一张工作表,我不太清楚,但是你应该习惯使用
查看->日志-
查看->执行脚本-/code>来检查你的代码是否有错误。一般来说,谷歌工作表可能脾气暴躁,有时执行缓慢。如果问题仍然存在,我建议一个新问题,我明天(澳大利亚时间)会看一看如果没有人回答。