0

我有“A”列,我想根据单元格从第 2 行开始的字符数来插入指向单元格中数据的超链接。例如:

  • 如果单元格 A2 有数据 (1-2345678901) = 12 个字符,请插入链接 www.mysite.com/ + 单元格 A2 的值

结果应该是 www.mysite.com/1-2345678901

  • 如果单元格 A2 有数据 (1-2345678) = 9 个字符,请插入链接 www.mysite2.com/ + 单元格 A2 的值。

结果应该是超链接 www.mysite.com/1-2345678

我需要知道这个脚本是否可以调整或者这个脚本非常好。如果有人有新的想法,请随时告诉我。

脚本:

    function onEdit(e)
    {
      var activeCell = SpreadsheetApp.getActiveSpreadsheet().getActiveCell();
      var activeCellValue = activeCell.getValue();


      var row = activeCell.getRow();
      var column = activeCell.getColumn();

      if(row < 2)   return; //If header row then return
      var colNums  = [1]; //Coulmns, whose edit is considered
      if(colNums.indexOf(column) == -1) return; //If column other than considered then return

      var length = String(activeCellValue).length;

      if(length == 12)
      {
        activeCell.setValue('=HYPERLINK' + '("www.mysite.com='+activeCellValue+'";"'+activeCellValue+'")')
      }
      else if(length == 9)
      {
        activeCell.setValue('=HYPERLINK' + '("www.mysite2.com='+activeCellValue+'";"'+activeCellValue+'")');
      }
    }
4

1 回答 1

1

您的脚本可以通过使用传递给它的事件数据而不是诉诸服务调用来调整以获得更好的性能。通过尽早测试救助条件,您已经做了正确的事情,但即使是这些条件也可以重新排序以增加提前退出的机会。

function onEdit(e)
{
  var activeCell = e.range;
  var activeCellValue = e.value;

  if (!e.value) return;    // do nothing if value is 'undefined'

  var column = activeCell.getColumn();

  var colNums  = [1]; //Columns, whose edit is considered
  if(colNums.indexOf(column) == -1) return; //If column other than considered then return

  var row = activeCell.getRow();
  if(row < 2)   return; //If header row then return

  var length = String(activeCellValue).length;

  if(length == 12)
  {
    activeCell.setValue('=HYPERLINK' + '("www.mysite.com/'+activeCellValue+'";"'+activeCellValue+'")')
  }
  else if(length == 9)
  {
    activeCell.setValue('=HYPERLINK' + '("www.mysite2.com/'+activeCellValue+'";"'+activeCellValue+'")');
  }
}
于 2013-07-10T04:11:31.307 回答