google-apps-script - 重命名现有的谷歌驱动器文件夹名称
问题描述
我有超过 100 多个谷歌驱动器文件夹,我想使用 GAS 更新名称。我在下面使用此代码,但是当我测试它时,文件夹名称更改为“未定义”。.setName() 是正确的使用方法还是我需要复制文件夹并重命名它来完成这个?
- FolderID 列在 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); } } }
当前测试将文件夹名称更改为“未定义”,但实际结果应该是 B 列中列出的任何值。
解决方案
您的函数采用列 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();
}
}
这将在运行时更新。
推荐阅读
- jenkins - Jenkins参数化触发器没有创建独特的工作
- php - 来自 XLSX 的大数据导入脚本
- c - 如何返回 C 结构
- python - Seaborn,仅在 y 轴上绘制 3 个刻度
- opengl - 绘制抗锯齿粗镶嵌曲线
- file - 通过 javascript、json.string 中的混合文本和文件发送 asnyc 输入数据。不包括文件数据:/
- r - 在 ggplot 中包装图例标题(geom_bar / fill)
- accessibility-insights - Power Automate Desktop - 从 Accessibility Insights for Windows 报告创建 UI 选择器
- java - 如何将json字符串中的两个日期转换为json中的数组?
- javascript - 如何设置具有多个复选框的表单,其中只有一个可以使用 Material-UI 组件“选中”?