我不断收到错误“异常:您无权调用 SpreadsheetApp.openById。”

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

我正在尝试创建一个宏,将工作表从主电子表格导出到另一个电子表格。即使我是两个电子表格的所有者,我仍然收到此错误。这是我的代码:

function exportAndRenameSheet() {
// Source spreadsheet details
var sourceSpreadsheetId = 'XXXXXXXX';
var sourceSheetName = 'XXXXXX';  // Replace with the name of the source sheet

// Target spreadsheet details
var targetSpreadsheetId = 'XXXXXXXXXXX';
var targetSheetNamePrefix = 'Exported_';  // Prefix for the new sheet name

// Open the source spreadsheet
var sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId);

// Get the source sheet
var sourceSheet = sourceSpreadsheet.getSheetByName(sourceSheetName);

if (!sourceSheet) {
Logger.log('Source sheet not found.');
return;
}

// Copy the source sheet to a temporary sheet
var tempSheet = sourceSheet.copyTo(sourceSpreadsheet);`your text`

// Get the date for renaming the sheet
var formattedDate = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd');

// Rename the temporary sheet with the desired prefix and date
tempSheet.setName(targetSheetNamePrefix + formattedDate);

// Open the target spreadsheet
var targetSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetId);

// Check if the sheet with the same name already exists in the target spreadsheet
var existingSheet = targetSpreadsheet.getSheetByName(tempSheet.getName());

// If the sheet exists, delete it before copying the new sheet
if (existingSheet) {
  targetSpreadsheet.deleteSheet(existingSheet);
}

// Copy the temporary sheet to the target spreadsheet
var newSheet = tempSheet.copyTo(targetSpreadsheet);

// Delete the temporary sheet from the source spreadsheet
sourceSpreadsheet.deleteSheet(tempSheet);

Logger.log('Sheet exported and renamed successfully.');
}

我已经打开了 Google App Scripts API,我已经仔细检查了两张表格的权限(即使我是所有者)。我之前运行过宏,Google 要求我授予访问权限,但这次没有要求。预先感谢!`

google-apps-script file-permissions
1个回答
0
投票

这会将工作表从一个电子表格导出到另一个电子表格并重命名。

function exportAndRenameSheet() {
  var sss = SpreadsheetApp.openById(gobj.globals.test1id);
  var tss = SpreadsheetApp.openById(gobj.globals.test2id);
  var ssh = sss.getSheetByName('Sheet1');
  if (!ssh) {
    Logger.log('Source sheet not found.');
    return;
  }
  var tsh = ssh.copyTo(tss); 
  var formattedDate = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd');
  tsh.setName('Exported_' + formattedDate);
  Logger.log('Sheet exported and renamed successfully.');
}
© www.soinside.com 2019 - 2024. All rights reserved.