我正在寻找一个循环浏览Google工作表的脚本,并重命名google驱动器上文件夹中的文件。
工作表包含驱动器中文件的位置以及原始文件的名称和文件的新名称。
由于我是谷歌脚本和javascript的完全初学者,如果有人可以帮我解决这个问题,我会非常感激。
答案 0 :(得分:1)
我没有任何事可做,所以我想我试一试。我只测试过一次它并没有与用户互动。所以就是这样。
function renameFiles(shname){
//var shname=shname||'bullSheet';
if(shname){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(shname);
var rg=sh.getDataRange();
var vA=rg.getValues();
var folderId=getFolderId(shname);
if(vA.length>2){
var nameA=[];
var idA=[];
var fldr=DriveApp.getFolderById(folderId);
var files=fldr.getFiles();
while(files.hasNext()){
var file=files.next();
nameA.push(file.getName());
idA.push(file.getId());
}
for(var i=2;i<vA.length;i++){
var idx=nameA.indexOf(vA[i][0]);
if(!vA[i][2] && vA[i][1] && vA[i][0] && idx>-1){
DriveApp.getFileById(idA[idx]).setName(vA[i][1]);
vA[i][2]='RENAMED';
}
}
rg.setValues(vA);
}else{
var fA=[];
var fldr=DriveApp.getFolderById(folderId);
var files=fldr.getFiles();
while(files.hasNext()){
var file=files.next();
sh.appendRow([file.getName()]);
}
}
}
}
function getFolderId(shname){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(shname);
var rg=sh.getDataRange();
var vA=rg.getValues();
return vA[0][1];
}
这是您开始时的电子表格。它有B1中的文件夹ID和第2行的三个标题,没有别的。
然后你第一次运行renameFiles,它会读取id在B2中的目录中的文件并将它们放在电子表格上。
然后在标题下的第2列中输入这些文件的新名称。
然后再次运行程序并将文件重命名为新名称并放置&#34; RENAMED&#34;在第3列中,如果再次运行它,程序将无法执行任何操作。
还有一点,你可能希望添加类似对话框,告诉用户发生了什么,但我会将其作为练习留给你。
如果目录中有大量文件,则可能需要向进程添加页面标记。我选择不这样做,因为我基本上懒惰。
如果您想知道从何处获取文件夹ID,请转到google drive中的文件夹并查看该网址。它是网址中最长的部分