首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将工作表复制到新电子表格

将工作表复制到新电子表格
EN

Web Applications用户
提问于 2019-05-20 05:46:31
回答 1查看 620关注 0票数 1

我想将电子表格文件中的一个工作表复制到一个新的电子表格文件中。要复制的工作表包含公式,只想将值复制到新的电子表格文件。

我把剧本写成这样:

代码语言:javascript
运行
复制
function makecopyto() {
  const folderId = '1Y7RmeF9sluTndSUr2KQT8wlOL9oUkLVU';
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Sheet1');
  const newSsName = sheet.getRange('Sheet2!F1').getValue().toString();
  const resource = {
    title: newSsName,
    mimeType: MimeType.GOOGLE_SHEETS,
    parents: [{ id: folderId }]
  };
  const fileJson = Drive.Files.insert(resource);
  const targetSs = SpreadsheetApp.openById(fileJson.id);
  const targetSheet = sheet.copyTo(targetSs);
}

但结果并不合适。

我想要的结果应该是这样:

EN

回答 1

Web Applications用户

回答已采纳

发布于 2019-05-20 07:06:05

  • 您希望以新电子表格的形式从活动电子表格中复制工作表。
  • 您只想复制工作表的值。
  • 你想保持单元格的格式。

如果我的理解是正确的,这次修改怎么样?请把这个答案看作是几个答案中的一个。在这次修改中,我使用了以下流程。

  1. 复制活动电子表格。
  2. 重命名复制的电子表格。
  3. 只将"Sheet1“的值复制到"Sheet1”。
  4. 删除除"Sheet1“外的工作表。

修改脚本:

代码语言:javascript
运行
复制
function makecopyto() {
  const folderId = '1Y7RmeF9sluTndSUr2KQT8wlOL9oUkLVU';
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // I modified the following script.
  var newSpreadsheet = DriveApp.getFileById(ss.getId()).makeCopy(DriveApp.getFolderById(folderId));
  newSpreadsheet.setName(ss.getRange('Sheet2!F1').getValue());
  var newSs = SpreadsheetApp.openById(newSpreadsheet.getId());
  var sheets = newSs.getSheets();
  var range = newSs.getSheetByName("Sheet1").getDataRange();
  range.copyTo(range, {contentsOnly: true});
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].getSheetName() != "Sheet1") {
      newSs.deleteSheet(sheets[i]);
    }
  }
}

参考资料:

如果我误解了你的问题,而这不是你想要的结果,我道歉。

票数 0
EN
页面原文内容由Web Applications提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webapps.stackexchange.com/questions/129908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档