重命名现有的Google驱动器文件夹名称

时间:2019-04-16 19:21:05

标签: google-apps-script google-drive-api

我有100多个Google驱动器文件夹,我想使用GAS更新名称。我在下面使用此代码,但是在测试时,文件夹名称更改为“ undefined”。 .setName()是使用的正确方法,还是我需要复制文件夹并将其重命名才能完成此操作?

  • 文件夹ID列在A列中
  • FolderName(新文件夹名称)列在B列中
  • 已更新?在C列中,表示行是否已完成。

    function renameFolderName(){
        var s = SpreadsheetApp.openById("sheetIDhere").getSheetByName('TEST');
        var id = s.getRange(2,1,s.getLastRow()).getValues();
        var foldernames = s.getRange(2,2,s.getLastRow()).getValues();
        var updated = "Yes";
    
    for (a = 0; a < id.length-1; a++){
         for (b = 0; b < foldernames.length-1; b++)
             {
         var folderlocation = DriveApp.getFolderById(id[a][0]).setName(foldernames[b][1]);
         s.getRange(a+2,3).setValue(updated);
             }
             }
             }
    

当前测试将文件夹名称更改为“ undefined”,但实际结果应为B列中列出的任何值。

1 个答案:

答案 0 :(得分:0)

您的函数使用的是BC列而不是AB列。

function renameFolderName() {
    var s = SpreadsheetApp.openById("sheetIDhere").getSheetByName('TEST');

    var data = s.getDataRange().getValues();
    var updated = [];

    for (a = 1; a < data.length - 1; a++) {
        var id = data[i][0];
        var newName = data[i][1];
        var folderlocation = DriveApp.getFolderById(id).setName(newName);
        updated.push(["Yes"]);

    }
    s.getRange(2, 3,updated.length, updated[0].length).setValues(updated);
}

应该更清楚。如果您不关心它运行速度是否较慢,则可以执行以下操作:

function renameFolderName() {
    var s = SpreadsheetApp.openById("sheetIDhere").getSheetByName('TEST');

    var data = s.getDataRange().getValues();

    for (a = 1; a < data.length - 1; a++) {
        var id = data[i][0];
        var newName = data[i][1];
        var folderlocation = DriveApp.getFolderById(id).setName(newName);
        s.getRange(a+1,3).setValue("Yes");
        SpreadsheetApp.flush();

    }

}

它将在运行时更新。

相关问题