我有100多个Google驱动器文件夹,我想使用GAS更新名称。我在下面使用此代码,但是在测试时,文件夹名称更改为“ undefined”。 .setName()是使用的正确方法,还是我需要复制文件夹并将其重命名才能完成此操作?
已更新?在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列中列出的任何值。
答案 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();
}
}
它将在运行时更新。