正在工作的onEdit()脚本突然在Google Spreadsheet中不工作 [英] Working onEdit() script suddenly not working in Google Spreadsheet

查看:72
本文介绍了正在工作的onEdit()脚本突然在Google Spreadsheet中不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Google电子表格,它在输入值时使用google App脚本onEdit()事件提供单位转换.这项工作直到上周才生效,但似乎不再起作用.除了不建议使用setNote()弃用Range setComment()API的更改外,我看不出该脚本不再起作用的原因.有趣的是,执行日志似乎暗示它应该可以工作,但是单元格不会更新:

I have a google spreadsheet that uses the google App scripting onEdit() event to provide unit conversions when entering values. This was working as recently as last week, but no longer seems to work. Aside from the change of the Range setComment() API being deprecated in favour of setNote() I can see no reason why this script would not work anymore. Interestingly the execution log seems to imply it SHOULD be working, but the cells do not update:

[13-06-26 15:29:57:973 BST] Starting execution
[13-06-26 15:29:57:976 BST] Spreadsheet.getActiveSheet() [0 seconds]
[13-06-26 15:29:57:977 BST] Range.getWidth() [0 seconds]
[13-06-26 15:29:57:978 BST] Range.getHeight() [0 seconds]
[13-06-26 15:29:58:151 BST] Range.getValue() [0.173 seconds]
[13-06-26 15:29:58:151 BST] Range.setValue([13.670166224]) [0 seconds]
[13-06-26 15:29:58:151 BST] Range.setNote([Distance Conversion: 22km => 13.670166224]) [0 seconds]
[13-06-26 15:29:58:152 BST] Execution succeeded [0.176 seconds total runtime]

这是代码.感谢您对更改的任何提示!

Here's the code. Grateful for any hints on what's changed!

function Milify( x )
{
  function convert( str, p1, offset, s )
  {
    // p1 is the matched number
    // 1 kilometre = 0.6a21371192 miles
    return Number(p1) * 0.621371192;
  }

  var s = String( x );
  var test = /(\d+(?:\.\d*)?)km/;
  return s.replace( test, convert );
}
function onEdit( event )
{
  var ss = event.source.getActiveSheet();
  //var er = event.source.getActiveRange();
  var er = event.range;

  //er.setNote( "" );
  //er.setNote( er.getNote() + "\n" + "Trigger Fired for " + er.getA1Notation() + " with " + er.getValue() + " " + er.getWidth() + "x" + er.getHeight() );

  if ( ( er.getWidth() * er.getHeight() ) === 1 )
  {
    var valueOriginal = er.getValue();
    var valueInMiles = Milify( valueOriginal, er );
    er.setValue( valueInMiles );
    er.setNote( "Distance Conversion: " + valueOriginal + " => " + valueInMiles );
  }
}

谢谢.

推荐答案

这可能与此错误有关此处

因此,您可能会受益于添加一行er.getValue();. 在er.setValue(valueInMiles)行之后;

So you might benefit from adding a line er.getValue(); after the line er.setValue( valueInMiles );

今天类似的事情对我有用.

A similar thing worked for me today.

这篇关于正在工作的onEdit()脚本突然在Google Spreadsheet中不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆