首页 > 解决方案 > 导出为 xlsx 的 Google 脚本不起作用

问题描述

function exportSpreadsheet() {
  var destination = SpreadsheetApp.create('Temp');
  var dest1 = destination.getActiveSheet().setName('출고입력 거래처정보(상단)');
  var dest2 = destination.insertSheet('출고입력 폼목정보(하단)');  
  var source1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('출고입력 거래처정보(상단)').getDataRange();
  var source2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('출고입력 폼목정보(하단)').getDataRange();
  var source1Data = source1.getValues();
  var source2Data = source2.getValues(); 
  var s1Rows = source1.getNumRows();
  var s1Columns = source1.getNumColumns();  
  var s2Rows = source2.getNumRows();
  var s2Columns = source2.getNumColumns();   

  // Copy Data to Temp file
  for(var i = 0; i<s1Rows; i++){ 
  for(var j = 0; j<s1Columns; j++) {
       dest1.getRange(i+1,j+1).setValue(source1Data[i][j]);
    }
  }  

  for(var i = 0; i<s2Rows; i++){ 
    for(var j = 0; j<s2Columns; j++) {
        dest2.getRange(i+1,j+1).setValue(source2Data[i][j]);
    }
  }

  // Export to xlsx
  var ssID = destination.getId();
  var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export"+"?format=xlsx";

  var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};

  var response = UrlFetchApp.fetch(url, params).getBlob();
  // Save to drive
  var folder = DriveApp.getFolderById('1vDFMM2EfRe1unR6hJOsKapfJrcwxRkxy');
  folder.createFile(response).setName('출고.xlsx');

  // Delete Temp file
  DriveApp.getFilesByName('Temp').next().setTrashed(true);

}

我正在尝试从我的电子表格中导出两个选项卡并将其保存为 xlsx 文件。为此,我已将两个选项卡复制到一个新的电子表格中,然后使用以下代码导出到 xlsx。我已经阅读了几乎所有通过 Google Script 处理导出到 xlsx 的帖子,并得出结论它们都是下面代码的变体。它似乎有效,但有两个问题:

  1. 它可以工作,但 excel 文件不包含数据,只是用两个选项卡清空。该 URL 工作正常,下载时 xlsx 文件包含数据。

  2. 删除我创建的要导出的临时文件的最后一行不起作用。该文件仍然存在于驱动器中,并且没有任何更改。

我到处寻找答案,但无法弄清楚。任何帮助将不胜感激。

标签: excelgoogle-apps-script

解决方案


试试这个代码

function exportSpreadsheet() {

  var ssID = "yourID";

  var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export"+
                                                        "?format=xlsx&"+
                                                        "size=0&"+
                                                        "fzr=true&"+
                                                        "portrait=false&"+
                                                        "fitw=true&"+
                                                        "gridlines=false&"+
                                                        "printtitle=true&"+
                                                        "sheetnames=true&"+
                                                        "pagenum=CENTER&"+
                                                        "attachment=true";

  var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};

  var response = UrlFetchApp.fetch(url, params).getBlob();

  var folder = DriveApp.getFolderById("YourFolder");

  folder.createFile(response);

}

推荐阅读