谷歌脚本访问电子表格由ss名称

时间:2017-09-27 19:54:58

标签: google-apps-script

我每天都在抓几页,需要创建一个新的google工作表,以便将删除的数据放入其中。

我循环浏览页面,如果是第一页,我会创建一个以日期作为名称的新ss。

然后对于后续页面,我试图通过名称引用获取同一页面,以便添加第2,3页的数据,...

以下是代码:

if(start==1){
    // Create new ss in current folder
    var ss = SpreadsheetApp.create(full_d);
    var id = ss.getId();
    var file = DriveApp.getFileById(id);
    var folder = DriveApp.getFolderById('ABC');
    folder.addFile(file);
    DriveApp.getRootFolder().removeFile(file); 
  }else{
    var ss = SpreadsheetApp.getSheetByName(full_d);
  }
  ss.getRange(ss.getLastRow() + 1, 1, res.length, res[0].length).setValues(res);

如果我删除了if语句并只放了var ss = Spreadsheet.getActiveSheet(),我的代码就可以了。

由于

1 个答案:

答案 0 :(得分:1)

这次修改怎么样?

修改要点:

  1. 使用getSheets()创建的电子表格中的工作表已获得。
  2. 当start不为1时,var ss = SpreadsheetApp.getSheetByName(full_d);发生错误。因此修改了文件名为full_d的电子表格。
  3. 考虑了ss的范围。但在GAS中,这可能不是问题。
  4. 修改后的脚本:

    var ss; // <--- Added
    if(start==1){
      // Create new ss in current folder
      ss = SpreadsheetApp.create(full_d);
      var id = ss.getId();
      var file = DriveApp.getFileById(id);
      var folder = DriveApp.getFolderById('ABC');
      folder.addFile(file);
      DriveApp.getRootFolder().removeFile(file); 
      ss = ss.getSheets()[0]; // <--- Added
    }else{
      var file = DriveApp.getFilesByName(full_d).next(); // <--- Added
      ss = SpreadsheetApp.open(file).getSheets()[0]; // <--- Added
    }
    ss.getRange(ss.getLastRow() + 1, 1, res.length, res[0].length).setValues(res);
    

    如果我误解了你的问题,我很抱歉。那时,请告诉我。