同步 Excel 和 GoogleSheet

问题描述 投票:0回答:1

我有一个脚本可以将 Excel 文件与 google 工作表同步:

它工作正常,但是当我运行它并且工作表名称已经存在时,我收到错误。 如何解决此问题:在执行脚本之前覆盖或删除所有现有工作表? 我正在尝试发布代码,但总是出现错误。

// Importing all sheets from Excel to Google Sheets
function importAllExcelSheets() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var file = DriveApp.getFilesByName("Mijn Bestand.xlsm");

  // Replace NAAM_VAN_HET_EXCEL_BESTAND.xlsx with the exact name of your Excel file.
  if (file.hasNext()) {
    var excelFile = file.next();
    var blob = excelFile.getBlob();
    var resource = {
      title: "[Google Sheets] " + excelFile.getName(),
      mimeType: MimeType.GOOGLE_SHEETS,
    };
    var newFile = Drive.Files.insert(resource, blob);
    var newSpreadsheet = SpreadsheetApp.openById(newFile.id);
    var sheets = newSpreadsheet.getSheets();

    for (var i = 0; i < sheets.length; i++) {
      var newSheet = sheets[i];
      var data = newSheet.getDataRange().getValues();
      var sheetName = newSheet.getName();
      var targetSheet = sheet.copyTo(SpreadsheetApp.getActiveSpreadsheet());
      targetSheet.setName(sheetName);
      targetSheet.getRange(1, 1, data.length, data[0].length).setValues(data);
    }

    Browser.msgBox("Alle sheets uit het Excel-bestand zijn succesvol geïmporteerd.");
  } else {
    Browser.msgBox("Excel-bestand niet gevonden. Zorg ervoor dat het bestand bestaat en dat de naam correct is gespeld.");
  }
}
excel google-apps-script google-sheets synchronization
1个回答
0
投票

尝试更换线路:

targetSheet.setName(sheetName);

与:

try { targetSheet.setName(sheetName) } catch(e) {}

如果电子表格已经具有给定名称,则不会重命名工作表。

或者,您可以尝试获取具有相同名称的工作表并重命名。像这样的东西:

try {
  var temp_sheet = newSpreadsheet.getSheetByName(sheetName);
  temp_sheet.setName(temp_sheet.getName() + "#");
} catch(e) {}
© www.soinside.com 2019 - 2024. All rights reserved.