You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将新建表格从我的云端硬盘移至共享云端硬盘?

解决方案:将新建表格保存到共享云端硬盘

修正后的完整代码

function SaveNewFinancials() {
  const spreadsheet = SpreadsheetApp.getActive();
  const filename = spreadsheet.getRange("Inputs!B15").getValue(); // 直接指定工作表,无需切换激活状态
  const sharedFolderId = "xxxxxxx3nTzzyS-I1pWzsejHDCh5"; // 目标共享文件夹ID
  const sharedDriveId = "xxxxxxxxenHXUk9PVA"; // 共享驱动器ID

  // 1. 在个人云端硬盘创建新表格
  const newSpreadsheet = SpreadsheetApp.create(filename);
  const newFileId = newSpreadsheet.getId();

  // 2. 复制指定工作表到新表格
  spreadsheet.getSheetByName('Balance Sheet').copyTo(newSpreadsheet).setName("Balance Sheet");
  spreadsheet.getSheetByName('Profit and Loss').copyTo(newSpreadsheet).setName("Profit and Loss");
  newSpreadsheet.deleteSheet(newSpreadsheet.getSheetByName("Sheet1"));

  // 3. 使用高级Drive服务将文件移动到共享驱动器文件夹
  Drive.Files.update(
    {
      parents: [
        {
          driveId: sharedDriveId,
          id: sharedFolderId,
          isRoot: false
        }
      ]
    },
    newFileId,
    null,
    {
      supportsAllDrives: true,
      // 移除原个人盘的父目录,彻底转移文件
      removeParents: [DriveApp.getFileById(newFileId).getParents().next().getId()]
    }
  );
}

关键修改说明

  • 简化工作表操作:直接通过Inputs!B15定位单元格获取文件名,无需反复切换激活工作表,提升脚本效率。
  • 替换错误的Drive API用法:
    • 用Drive.Files.update替代copy,实现文件从个人盘到共享盘的移动而非复制,避免冗余文件。
    • parents数组格式修正:driveId填写共享驱动器ID,id填写目标文件夹ID,确保指向正确的共享存储位置。
    • 强制添加supportsAllDrives: true参数,这是操作共享驱动器文件的必要配置。
  • 规避DriveApp局限性:DriveApp对共享驱动器的操作支持不完善,高级Drive服务是更可靠的方案,需确认已在脚本编辑器中启用(路径:编辑器 > 服务 > 添加服务 > 选择Drive API)。

额外注意事项

  • 确保账号对目标共享文件夹拥有编辑权限,否则会触发权限报错。
  • 若目标文件夹是共享驱动器的根目录,可将isRoot设为true,此时id参数可省略(建议保留文件夹ID以保证准确性)。

内容的提问来源于stack exchange,提问作者Jess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:30:13