【问题标题】:google script access spreadsheet by ss name谷歌脚本通过 ss 名称访问电子表格
【发布时间】:2017-09-27 19:54:57
【问题描述】:

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

我正在循环浏览页面,如果是第一页,我会创建一个以日期为名称的新 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(),我的代码就可以工作。

谢谢

【问题讨论】:

  • 什么是full_d?
  • 今天是今天。这是我希望文件具有的名称。
  • 您希望将此数据放入哪个表中?ss.getRange(ss.getLastRow() + 1, 1, res.length, res[0].length).setValues(res);
  • 在名为 full_d 的文件中。文件的第一页

标签: google-apps-script


【解决方案1】:

这个修改怎么样?

修改点:

  1. 已提供使用getSheets() 创建的电子表格中的工作表。
  2. 当 start 不是 1 时,var ss = SpreadsheetApp.getSheetByName(full_d); 出现错误。因此修改为打开文件名为full_d的电子表格。
  3. 考虑了ss 的范围。但在 GAS 中,这可能不是问题。

修改后的脚本:

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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 2016-10-08
    • 2014-11-26
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多