在谷歌电子表格使用onEdit编辑单元格内容活(Using onEdit in Google Spr

2019-10-18 00:42发布

我在最困难的时候让我onEdit脚本工作。 我的工作,我们用它来追踪电话(日期,时间,指派技术等),通话记录片。 我们有另一个工作表设置为通过技术数据透视表报表称为电话。 这片应该自动计数每一天高科技的呼叫数量。 它的工作原理,但问题是任何时候多余的空格被添加到在电话记录片分配技术列的单元格,电话呼叫由Tech片对待,作为一个整体的其他人,所以看起来好像有4种不同的“鲍勃“S等

我已经成功地写一个脚本通过在指定技术柱的每个单元修剪空白清理它,而且我想翻译成onEdit脚本这活的完成同样的事情。

function onEdit(e) 
{ 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var r = ss.getActiveRange();
}

function myOnEdit() 
{
  function replacer( str, p1, p2, offset, s ) {
    return p1 
      }

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var cell = ss.getActiveCell().getA1Notation();
  var tsheet = "Phone Log";
  var sname = ss.getName();

  if (sname = tsheet) //Are we in the Phone Log sheet?
  {

    var r = ss.getActiveRange();
    var column = r.getColumn();

    if (column == 4) //Are we editing a cell in the "Assigned Tech" column?
    {

      var value = cell.getValue();
      if ( value == String )
      {
        value = value.replace( /^\s*(.*?)\s*$/gm , replacer );
        cell.setValue( value) ;
      } 
    }
  }

}

所以基本上,我试图让单元格的值被编辑,即“鲍勃”,删除空格,并与原来的版本,“鲍勃”更换输入值。 我没有得到任何错误,当我运行的脚本编辑器上面的脚本,但它只是不工作。 我没有安装onMyEdit()作为onEdit触发。

有什么想法吗?

Answer 1:

我很惊讶,这对你的作品。 由于的getA1Notation()调用, cell包含字符串,所以这将不支持.getValue().setValue()方法。

“积极”试算表和单元格中的概念是不是真的适用于onEdit()触发功能; 调用它们在自己的执行情况,以及事件传递给他们提供上下文。 请参见了解事件 。

你也正在用一种简单而灾难性错误= 。 单个=是赋值操作,并且有比较两种口味, ===== 。 (第一比较两个对象的内容,第二也比较这些对象的类型。)当你有if (sname = tsheet)所以不进行比较的表的名称,它的分配的内容tsheetsname ,然后做的布尔测试sname 。 (这种类型的错误不被解释抓住了,因为它是完全有效的......它只是不是你想要的。)

当你正在检查if ( value == String ) ,你的意思是检查值的类型是一个字符串? 如果是这样,那就像这样: if (typeof value === 'string')

更新脚本

function myOnEdit(e) 
{
  function replacer( str, p1, p2, offset, s ) {
    return p1 
      }

  var ss = e.source;
  var cell = e.range;
  var tsheet = "Phone Log";
  var sname = ss.getName();

  if (sname === tsheet) //Are we in the Phone Log sheet?
  {

    var column = cell.getColumn();

    if (column == 4) //Are we editing a cell in the "Assigned Tech" column?
    {

      var value = cell.getValue();
      if (typeof value === 'string')
      {
        value = value.replace( /^\s*(.*?)\s*$/gm , replacer );
        cell.setValue( value );
      } 
    }
  }
}


文章来源: Using onEdit in Google Spreadsheets to edit cell contents live