【问题标题】:Google Sheets Script Error - Cannot convert [object Object] to SpreadsheetGoogle 表格脚本错误 - 无法将 [object Object] 转换为电子表格
【发布时间】:2016-12-09 17:14:27
【问题描述】:

我正在尝试创建一个脚本,在我的 Google 驱动器中创建一个新的电子表格,然后将特定 Google 驱动器文件夹中的工作表合并到新创建的电子表格中。

截至目前,我收到以下错误:无法将 [object Object] 转换为电子表格。 (第 34 行,文件“代码”)

我复制了下面的代码。

 function mergeSheets() {

  /* Retrieve the desired folder */
  var myFolder = DriveApp.getFoldersByName("Merging Spreadsheet Test Folder").next();

  /* Get all spreadsheets that resided on that folder */
  var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet");


var newSpreadSheet = {
    "title": "Test Merge Document",
    "mimeType": "application/vnd.google-apps.document",
    "parents": [
      {
       "id": "0B4DgXVz2cL8oRURkdUNCZEhITG8"
      }
    ]
  };

    Drive.Files.insert(newSpreadSheet);

  /* Iterate over the spreadsheets over the folder */
  while(spreadSheets.hasNext()) {

    var sheet = spreadSheets.next();

    /* Open the spreadsheet */
    var spreadSheet = SpreadsheetApp.openById(sheet.getId());

    /* Get all its sheets */
    for(var y in spreadSheet.getSheets()) {

      /* Copy the sheet to the new merged Spread Sheet */
      spreadSheet.getSheets()[y].copyTo(newSpreadSheet); 
    }
  }      
 }     

任何帮助将不胜感激。

【问题讨论】:

  • 我注意到您使用 SpreadsheetApp 打开了其他电子表格。也许你应该在 while 循环之前以同样的方式打开 newSpreadsheet

标签: google-apps-script


【解决方案1】:

您正在尝试将工作表保存到对象而不是电子表格。有两种方法可以解决此问题。

您可以使用以下方法创建电子表格:

var newSpreadSheet = SpreadsheetApp.create("Test Merge Document");

或在制作完成后打开工作表:

var newSpreadSheet = {
    "title": "Test Merge Document",
    "mimeType": "application/vnd.google-apps.document",
    "parents": [
      {
       "id": "0B4DgXVz2cL8oRURkdUNCZEhITG8"
      }
    ]
  };

var newSS =  Drive.Files.insert(newSpreadSheet),
    newSpreadSheet = SpreadsheetApp.openById(newSS.id);

【讨论】:

    【解决方案2】:

    这是我最终使用的解决方案。像魅力一样工作。

     function mergeSheets() {
    
     /* Retrieve the desired folder */
     var myFolder = DriveApp.getFoldersByName("Enter Folder Name Here").next();
    
     /* Get all spreadsheets that resided on that folder */
     var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet");    
    
     /* Creates new spreadsheet to merge documents into */
    var newSpreadSheet = SpreadsheetApp.create("Enter Name For New Spreadsheet Here");
    
    /* Iterate over the spreadsheets over the folder */
    while(spreadSheets.hasNext()) {
    var sheet = spreadSheets.next();
    
    /* Grabs name of the document */    
    var ssName = sheet.getName();
    Logger.log(ssName)
    
    /* Open the spreadsheet */
    var spreadSheet = SpreadsheetApp.openById(sheet.getId());
    
    /* Get all its sheets */
    for(var y in spreadSheet.getSheets()) {
    
          /* Copy the sheet to the new merged Spread Sheet */
          spreadSheet.getSheets()[y].copyTo(newSpreadSheet).setName(ssName);
        }
    
      }      
     }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多