gpt4 book ai didi

google-apps-script - 复制整个电子表格,只保留值

转载 作者:行者123 更新时间:2023-12-04 15:38:28 25 4
gpt4 key购买 nike

我想将大约 20 多张工作表的整个电子表格复制到云端硬盘中的不同位置;但是,我只想保留每个单元格中的硬值和格式,而不是公式(基本上只是拍摄值的快照)。我一直在研究如何写这个,但我对什么是最好的方法没有一个明确的想法。我刚刚开始在我的谷歌表格培训中学习循环等条件,任何帮助将不胜感激。谢谢!

enter image description here

那些绿色的单元格都是 vlookups,它们从我在另一个电子表格上的一个数组中更新。这个想法是在数组中获取所有正确的数据,让这张表完全填写当天的正确值,然后最好将其保存为谷歌表,但只保存值,以便事后可以编辑,如果有的话是数组数据中的错误。

最佳答案

  • 您想将源电子表格复制到 Google Drive 的特定文件夹中。
  • 您要使用 a date stamped on it for a name作为文件名。
  • 您不想复制公式。您只想复制显示值。
  • 在您的电子表格中,many vlookups and other outside reference cells 的公式被包含在内。
  • 您想使用 Google Apps 脚本来实现这一点。

  • 如果我的理解是正确的,这个答案怎么样?请将此视为几种可能的答案之一。
    上述目标的示例脚本流程如下。
    流动:
  • 将源电子表格中的所有工作表复制为临时工作表。
  • 在复制的工作表中,单元格仅被值覆盖。通过这种方式,可以删除公式。
  • 复制源电子表格。
  • 删除源电子表格中的临时表。
  • 删除目标电子表格中的原始工作表。
  • 将复制的电子表格移动到特定文件夹。

  • 示例脚本:
    在运行脚本之前,请设置源电子表格 ID 和目标文件夹 ID。
    function myFunction() {
    var spreadsheetId = "###"; // Please set the source Spreadsheet ID.
    var destFolderId = "###"; // Please set the destination folder ID.

    // Copy each sheet in the source Spreadsheet by removing the formulas as the temporal sheets.
    var ss = SpreadsheetApp.openById(spreadsheetId);
    var tempSheets = ss.getSheets().map(function(sheet) {
    var dstSheet = sheet.copyTo(ss).setName(sheet.getSheetName() + "_temp");
    var src = dstSheet.getDataRange();
    src.copyTo(src, {contentsOnly: true});
    return dstSheet;
    });

    // Copy the source Spreadsheet.
    var destination = ss.copy(ss.getName() + " - " + new Date().toLocaleString());

    // Delete the temporal sheets in the source Spreadsheet.
    tempSheets.forEach(function(sheet) {ss.deleteSheet(sheet)});

    // Delete the original sheets from the copied Spreadsheet and rename the copied sheets.
    destination.getSheets().forEach(function(sheet) {
    var sheetName = sheet.getSheetName();
    if (sheetName.indexOf("_temp") == -1) {
    destination.deleteSheet(sheet);
    } else {
    sheet.setName(sheetName.slice(0, -5));
    }
    });

    // Move file to the destination folder.
    var file = DriveApp.getFileById(destination.getId());
    DriveApp.getFolderById(destFolderId).addFile(file);
    file.getParents().next().removeFile(file);
    }
    笔记:
  • 在此示例脚本中,the script of this answer被使用。
  • 这是一个简单的示例脚本。所以请根据您的实际情况修改它。

  • 引用:
  • copy(name)
  • copyTo(destination, options)
  • map()
  • forEach()
  • addFile()
  • removeFile()
  • 关于google-apps-script - 复制整个电子表格,只保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58923439/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com