Google表格执行脚本onEdit

时间:2017-09-09 14:56:28

标签: google-apps-script google-sheets

我是Google表格脚本的新手,并且试图执行以下操作时遇到困难。我有2列:C包含开始时间码,D包含结束时间码。第三列(F)包含由开始时间码和结束时间码产生的电影提示的长度。由于时间码来自脚本,因此包含结果的单元格无法导出为其他格式。所以我试图创建第4列,将列F的结果打印为值。我设法写了一个可以做到的小脚本。它看起来像这样:

function getRangeValuesEP01() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var range = ss.getSheetByName("EP01").getRange('F3:F100').activate();
 var values = range.getValues();
 return values;
}; 

问题是,当我编辑C或D中的任何时间码时,它不会自动执行。

所以我尝试了这个:

function onEdit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet()
  var sheetName = sheet.getName();
  if ( sheetName == "EP02" || sheetName == "EP01" ) {
    var range = sheetName.getRange('F3:F100').activate();
    var r = sheetName.getActiveRange();
  if (r.getColumn() == 4 ) {
      var col = r.getColumn();
      if ( col >=  3 && col <= 100 ) {
        sheetName.getRange(r.getRow(),5);
        var values = range.getValues();
      }
    }
  }
 }

它没有给我任何错误,但它也没有做任何事情。它可能没有多大意义。正如我所说,我是这些剧本的新手。并且它没有考虑到必须在C和D列中寻找编辑。哦,或者是否足够看F,因为当C或D改变时它已经更新了它的结果?

也许有人可以把我推向正确的方向?

1 个答案:

答案 0 :(得分:0)

阅读评论:

function myonEdit(e) 
{
  var sheet=e.source.getActiveSpreadsheet();
  var sheetName=sheet.getName();
  if(sheetName=="EP02" || sheetName=="EP01") 
  {
    var r=sheet.getRange('F3:F100');//I made changes up to this point but the next line makes no sense so rethink it in light of changes
    if (r.getColumn()==4)//This line doesn't make any sense because you set range to F3:F100 F is column 6 so it will never be 4 
    {
      var col= r.getColumn();
      if ( col >=  3 && col <= 100 ) 
      {
        sheetName.getRange(r.getRow(),5);
        var values = range.getValues();
      }
    }
  }
}