在谷歌驱动器中重命名文件名

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

我在google drive里的文件都是大写的,我想把它们全部改名为小写。

例子:

ZVXDA0002-ZPOILTY024(full).xml should be renamed as zvxda002-zpoilty024(full).xml

以下是我试过的脚本

function FileRenaming() {
  var SourceFolder = DriveApp.getFolderById("Test_rename")
  var Files = SourceFolder.getFiles();
  while(Files.hasNext()) {
    var file = Files.next();
    var FileRename =  file.makeCopy(file.getName());
    var DestinationFolder = DriveApp.getFolderById("Test_renameD")
    DestinationFolder.addFile(FileRename);
    SourceFolder.removeFile(file);
}
}

返回

Exception: Unexpected error while getting the method or property getFolderById on object DriveApp. (line 2, file "Code")Dismiss
javascript google-apps-script google-drive-api
1个回答
2
投票

DriveApp.getFolderById() 期待一个ID,而不是一个名字

  • 如果您不知道文件夹的Id,可以使用 DriveApp.getFoldersByName(name) 而是
  • 请注意,在这种情况下,你会得到一个数组,其中可能有几个文件夹具有相同的名称(因为名称不像Ids在Google Drive上是独一无二的)。
  • 您需要使用 DriveApp.getFoldersByName(name).next() 检索第一个指定名称的文件夹。
  • 至于重命名文件夹,你只需要使用函数 setName(name)
  • 你提供的脚本并没有改变名称,而是将文件复制到不同的文件夹中。

如何重命名文件夹的例子。

function renameFolder(){
 var file = DriveApp.getFoldersByName(name).next();
 var oldName = file.getName();
 var newName = oldName.toLowerCase();
 file.setName(newName)
}

如何重命名文件夹中的文件示例。

function renameFiles(){
 var folder = DriveApp.getFoldersByName(name).next();
 var Files = folder.getFiles();
 while(Files.hasNext()) {
   var file = Files.next();
   var oldName = file.getName();
   var newName = oldName.toLowerCase();
   file.setName(newName)
 }
}

0
投票

如果你创建一个后续的电子表格,并假设你想重命名的所有文件都在一个特定的文件夹中,下面的代码将帮助你列出文件(这在脚本中是可选的,但可以用来检查脚本是否在做它的工作!!!),然后将文件改名为小写。),然后将文件重命名为小写。你可以从创建的菜单中运行脚本 (My Files)内的电子表格,或者设置一个触发器,在特定的时间日自动运行。

所以,你需要:

代码:

     // ---------- Menu ----------
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('My Files')
  .addItem('Rename files', 'RenameFilesToLowerCase')
  .addToUi();
}



function RenameFilesToLowerCase() {

  var folder = DriveApp.getFolderById('ID GOES HERE');  
  var sheetId = "ID GOES HERE";
  var ss = SpreadsheetApp.openById(sheetId);

  // specify the sheet to write the DATA, here it's Sheet1

  var sheet = ss.getSheetByName("Sheet1"); 
  sheet.getRange("A2:B").clear();

  var output = [];
  var file;
  var name;
  var link;
  var contents = folder.getFiles();
  while(contents.hasNext()) {
    file = contents.next();    
    data = [
      file.setName(file.getName().toLowerCase()),
      name =  file.getName(),
      link =  file.getUrl(),
    ];

    output.push([name, link]);

    // write data to the sheet  
    sheet.getRange(2, 1, output.length, output[0].length).setValues(output);  
  }  
};
© www.soinside.com 2019 - 2024. All rights reserved.