2016-08-04 33 views
0

此功能/触发组合旨在每天保存实时数据的日志。目的是将N2:P2作为C:E列底部的值粘贴。谷歌脚本 - 带时间触发的功能错误

  1. pullvalue()工作正常,如果我手动运行。
  2. 这是问题:设置时间驱动的触发器会导致将值粘贴到C1:E1而不是列底部。
  3. 我的怀疑是当Clast返回零值时target_range崩溃了,但我无法弄清楚原因。

我错过了什么?感谢您的帮助/反馈!

function pullvalue() { 
 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var target = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var source_sheet = ss.getSheetByName("Production"); 
 
    var target_sheet = target.getSheetByName("Production"); 
 
    var source_range = source_sheet.getRange("N2:P2"); 
 
    var Cvals = ss.getRange("C1:C").getValues(); 
 
    var Clast = Cvals.filter(String).length; 
 
    var target_range = target_sheet.getRange("C"+(Clast+1)+":E"+(Clast+1)) 
 
    source_range.copyTo(target_range, {contentsOnly:true});}

回答

0

请核实这一行:

var Cvals = ss.getRange("C1:C").getValues(); 

变量SS返回目前仅activespreadsheet,但是当它从一个时间驱动的触发器运行没有活动表,所以你需要指明表单,可以使用getSheetByName()或getSheets()这行应该看起来像这样:

var sheet = ss.getSheetByName("Sheet1"); 
var Cvals = sheet.getRange("C1:C").getValues(); 

希望这会帮助你。

谢谢。

+0

完美的作品!谢谢! – xphrellis

相关问题