首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Google文件夹中附加所有google电子表格?

如何从Google文件夹中附加所有google电子表格?
EN

Stack Overflow用户
提问于 2020-04-23 15:01:22
回答 1查看 230关注 0票数 0

我有一个主谷歌工作表和一个包含5-6张谷歌文件夹。

如何将这5-6张纸全部添加到带有GAS的主板上?(它们都具有相同的标题。),这样我就可以通过更改文件夹ID来自动执行此操作。

我找到了下面的,它可以识别文件夹中的所有工作表,但不知道下一步。请帮帮忙。

代码语言:javascript
复制
function listFilesInFolder(folderName) {

var sheet = SpreadsheetApp.getActiveSheet();

//change the folder ID below to reflect your folder's ID (look in the URL when you're in your folder)
var folder = DriveApp.getFolderById("***ID***");
var contents = folder.getFiles();

var cnt = 0;
var file;

while (contents.hasNext()) {
    var file = contents.next();
    cnt++;
EN

回答 1

Stack Overflow用户

发布于 2020-04-23 16:34:27

答案:

您可以使用SpreadsheetApp获取数据,并使用getRange().setValues()__附加值。

代码示例:

由于我不知道您的文件夹/工作表的结构,所以这有点泛化:

代码语言:javascript
复制
function appendData() {
  var sheet = SpreadsheetApp.getActiveSheet();
  
  var folder = DriveApp.getFolderById("folderId");
  var files = folder.getFiles();
  
  while (files.hasNext()) {
    var tempFile = "";
    var file = files.next();
    // if the file is not a Sheet, skip it
    if (file.getMimeType() != "application/vnd.google-apps.spreadsheet") {
      tempFile = { 
        "title": file.getName(), 
        "parents": [ {
          "id": folderId
        }] 
      }; 

      file = Drive.Files.insert(tempFile, file.getBlob(), { "convert": true });
    }
      
    var importSheet = SpreadsheetApp.openById(file.getId())
    // assuming you only want to append the first sheet of each Spreadsheet:
    var range = importSheet.getSheets()[0].getDataRange();
    
    // extend the main sheet if you need to:
    try {
      sheet.getRange(1, 1, sheet.getDataRange().getNumRows() + range.getNumRows(), 1);
    }
    catch (e) {
      sheet.insertRowsAfter(sheet.getDataRange().getNumRows(), range.getNumRows() + 1);
    }    
    // remove the headers from the data to copy:    
    range = importSheet.getSheets()[0].getRange(2, 1, range.getNumRows() - 1, range.getNumColumns())
    
    // copy the data:
    sheet.getRange(sheet.getDataRange().getNumRows() + 1, 1, range.getNumRows(), range.getNumColumns()).setValues(range.getValues());
    if (tempFile != "") {
      Drive.Files.Delete(file.getId());
  }
}

这段代码做的事情:

如果是Excel文件,则将文件从指定的folder

  • Converts

  • 获取到电子表格文件如果是Excel文件,则

  • 使用SpreadsheetApp获取工作表数据

  • 检查要导入到的工作表是否有足够的行,如果它从要导入的数据中获取标题,则添加所需的行,以便不在数据中获取

  • 如果文件是Excel文件,则删除临时文件

确保从Resources > Advanced Google services...菜单项启用高级驱动器服务。

参考文献:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61381179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档