创建新文件夹并将 SHEET1 保存到新文件夹

Posted

技术标签:

【中文标题】创建新文件夹并将 SHEET1 保存到新文件夹【英文标题】:Create New Folder and Save SHEET1 to the New Folder 【发布时间】:2021-03-25 06:59:16 【问题描述】:

我找到了创建新文件夹并将电子表格副本保存到新文件夹的脚本。

    我只想保存 SHEET1,但我想不通 脚本在 My Drive 中创建新文件夹 => 但我想在 SHARE DRIVE / NEW CLIENT 中创建新文件夹
var ss               = SpreadsheetApp.getActiveSheet();
var dest_folder_name = ss.getRange('A1').getValue();
var copy_name        = ss.getRange('A2').getValue();

var dest_folder      = "";
var file_id          = SpreadsheetApp.getActiveSpreadsheet().getId();
var file             = DriveApp.getFileById(file_id);
var parent_folder    = file.getParents().next();
var sub_folders      = parent_folder.getFolders();

// search a destination folder in current folder
while (sub_folders.hasNext()) 
    dest_folder = sub_folders.next();
    if (dest_folder.getName() === dest_folder_name) 
        break;
    
    dest_folder = "";


// create the destination folder if nothing was found
if (dest_folder === "") 
    dest_folder = parent_folder.createFolder(dest_folder_name);


// copy the spreadsheet to the destination folder
file.makeCopy(copy_name, dest_folder);

问候, tt3

【问题讨论】:

您的问题中有 2 个问题吗?顺便说一句,我无法理解您的第二个问题It create folder in My Drive => and I would like to create folder which I know the folder ID (SHARE DRIVE/NEW CLIENT/new folder here)。可以问一下具体情况吗? 我的意思是我知道“新客户端”的文件夹 ID,但我不知道“新文件夹”的文件夹 ID => 在现有文件夹名称“新客户端”中创建新文件夹。谢谢 感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,从您的回复中,我仍然无法理解It create folder in My Drive => and I would like to create folder which I know the folder ID (SHARE DRIVE/NEW CLIENT/new folder here)。但我想试着理解它。当我能正确理解它时,我想考虑解决方案。非常抱歉,我无法尽快解决您的问题。 脚本在我的驱动器中创建新文件夹 => 但我想在共享驱动器/新客户端中创建新文件夹 简单的方法是将源文件放到我要创建新文件夹的根文件夹 => 我仍然需要第一部分的帮助:如何仅复制 SHEET1 【参考方案1】:

您可以使用电子表格 URL,将 /edit#gid=somegidhere 替换为 /export?gid=somegidhere 并使用 FetchApp fetch() 下载并使用 DriveApp createFile() 上传文件。

试试这个:

function myFunction() 

    
  var dest_folder_name = "66794562"
  var dest_folder      = "";
  var file_id          = SpreadsheetApp.getActiveSpreadsheet().getId();
  var file             = DriveApp.getFileById(file_id);
  var parent_folder    = file.getParents().next();
  var sub_folders      = parent_folder.getFolders();

  // search a destination folder in current folder
  while (sub_folders.hasNext()) 
      dest_folder = sub_folders.next();
      if (dest_folder.getName() === dest_folder_name) 
          break;
      
      dest_folder = "";
  

  // create the destination folder if nothing was found
  if (dest_folder === "") 
      dest_folder = parent_folder.createFolder(dest_folder_name);
  

  var sh = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = sh.getSheetByName("Sheet1");
  var spreadsheetId = sh.getId();
  var sheetId = sheet.getSheetId();

  var url           = 'https://docs.google.com/spreadsheets/d/'+spreadsheetId+'/export?gid='+sheetId;
  var token         = ScriptApp.getOAuthToken();
  var response      = UrlFetchApp.fetch(url, 
    headers: 
      'Authorization': 'Bearer ' +  token
    
  );

  var fileName = 'copyofSheet1';
  var blob   = response.getBlob().setName(fileName);
  dest_folder.createFile(blob);


来源:

目的地:

内容:

【讨论】:

@@Niikko:脚本有效。有没有办法修改脚本在这个 ==> 共享驱动器/新客户端/“这里的新文件夹”中创建新文件夹?【参考方案2】:

已编辑

问题的第一部分: here回答了类似的问题。

您问题的第二部分: 据我了解,您拥有目标电子表格的文件 ID,并且您知道源工作表的名称。然后试试这个:

function copyToSpreadsheet()

 var spreadsheet = SpreadsheetApp.openById("Your Spreadsheet ID");
 var sheet = spreadsheet.getSheetByName("SheetX");

 var destination = SpreadsheetApp.openById('Destination ID');
 sheet.copyTo(destination);

【讨论】:

感谢您的链接,简单的方法是将源文件放在我要创建新文件夹的根文件夹中。我仍然需要第一部分的帮助:如何仅复制 SHEET1

以上是关于创建新文件夹并将 SHEET1 保存到新文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何通过java过滤文本文件并将结果保存到新文件中

循环遍历excel文件做一些事情并将它们保存到新文件夹python pandas

将 jLabel 内容导出/保存到新文件夹

从文件夹中读取所有图像并检测人脸,裁剪并保存到新文件夹

如何复制或删除bash中的特定行并将它们创建到新文件中[重复]

Excel 宏不会将工作表复制到新工作簿