【问题标题】:Backup Google apps script not running备份 Google 应用程序脚本未运行
【发布时间】:2017-12-24 00:49:11
【问题描述】:

我有下面的脚本,我认为它正在运行,但是当我刚刚测试时,我得到了错误

TypeError:无法从未定义的第 31 行读取属性“0”。

我在下面加粗了。但就是这条线。 if(dataA[j][0] && dataA[j][1])。我在 A2 中有一个 =today() 来获取脚本用于在存档表中输入的日期,所以不确定这是否是问题,因为它在单元格中使用了谷歌表格式“日期”。

 function dataBackup() 
{
 var inputSS = SpreadsheetApp.getActiveSpreadsheet();
var archiveSS = SpreadsheetApp.openById('1uPA_4CRmv2wkqe1uljViJ-
1z1NTNDmwS3aE6TDowe88');
var sheetNames = ['AM trip', 'PM trip', 'Pool / Beach', 'Night Dive'];
for (var i=0; i<sheetNames.length; i++) 
{
  var inputSheet = inputSS.getSheetByName(sheetNames[i]);
var archiveSheet = archiveSS.getSheetByName(sheetNames[i]);
var date=new Date(inputSheet.getRange('A2').getValue());     
var rng=inputSheet.getRange('E7:U37');
var dataA=rng.getValues();
var data=[];
for(var j=0;i<dataA.length;j++)
{
  **if(dataA[j][0] && dataA[j][1])**
  {
    data.push([dataA[j].splice(0,0,date)]);
  }
}
var dv=archiveSheet.getRange(archiveSheet.getLastRow(), 1).getValue();
date=(typeof(dv)!='undefined')?dv:'No Date Found';
if (data.length>0) 
{
  archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), data.length);
  archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, data.length, rng.getWidth()+1).setValues(data);
} 
else 
{
  archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), 1);
  archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, 1, 2).setValues([[date, 'No Data']]);
}
}
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    简答

    相关的 for 循环有错字。开

    for(var j=0;i<dataA.length;j++)
    

    i 替换为j

    扩展答案

    如果 =TODAY() 导致错误,则不是,但值得注意的是 TODAY() 返回今天的日期。通过使用 getValue() 获取日期值,将日期对象传递给 Google Apps 脚本引擎,因此而不是

    var date=new Date(inputSheet.getRange('A2').getValue());
    

    试试

    var date=inputSheet.getRange('A2').getValue(); 
    

    【讨论】:

    • 这行得通,但现在它抛出了这个错误。 “范围宽度不正确,为 1 但应为 18(第 41 行,文件“更新备份数据”)”
    • @Paul 第 41 行是什么?
    • 这行得通,但现在它抛出了这个错误。 “范围宽度不正确,为 1 但应为 18(第 41 行,文件“更新备份数据”)”这是行“archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, data.length, rng.getWidth( )+1).setValues(数据);"
    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 2014-02-10
    • 2021-01-13
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    相关资源
    最近更新 更多