重命名谷歌云端硬盘中的文件名



>我在谷歌驱动器中有大写文件,我想将它们全部重命名为小写

例:

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

DriveApp.getFolderById()需要一个 Id,而不是一个名称

  • 如果您不知道文件夹的 ID,则可以改用DriveApp.getFoldersByName(name)
  • 请注意,在这种情况下,您将获得一个可能具有相同名称的多个文件夹的数组(因为与 ID 不同的名称在 Google 云端硬盘上不是唯一的(
  • 您需要使用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)
}
}

如果您创建一个后续电子表格,并假设您要重命名的所有文件都位于特定文件夹中,则以下代码将帮助您列出文件(这在脚本中是可选的,但对于仔细检查脚本是否正在完成其工作可能很有用!!您可以从电子表格中创建的菜单(My Files(运行脚本,也可以设置触发器以在特定时间/日期自动运行它:

因此,您需要:

  • 创建用于列出文件的新电子表格
  • 获取此电子表格的 ID (//https://drive.google.com/drive/folders/身份证在这里(
  • 获取包含文件的文件夹的 ID (https://docs.google.com/spreadsheets/d/ID在这里/编辑(
  • 每次手动运行脚本或设置触发器来执行此操作 自然而然

代码

// ---------- 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);  
}  
};

相关内容

最新更新