我正在尝试重命名 Google Drive 文件夹中出现的文件名。
当我手动运行它时,它完全正常工作,但当触发自动触发器时,它每次都会失败。手动运行需要 3 到 5.5 秒,触发时需要 1 到 1.5 秒。
我收到错误:
TypeError:iA.indexOf 不是重命名函数(代码:13:22)
怎么了?
这是我的代码:
function rename(iA = ['20240922', '20240924', '20240930'],
oA = ['NNN2024-09-22.mp4', 'NNN2024-09-24.mp4', 'NNN2024-09-30.mp4']) {
const SourceFolder = DriveApp.getFolderById("*****************");
const files = SourceFolder.getFiles();
while (files.hasNext()) {
const file = files.next();
const fileDateMatch = file.getName().match(/(\d{8})/); // Extract date from file name
if (fileDateMatch) {
const fileDate = fileDateMatch[1]; // Get the matched date string
const idx = iA.indexOf(fileDate);
if (idx !== -1) {
file.setName(oA[idx]);
Logger.log(`Renamed file: ${file.getName()} to ${oA[idx]}`); // Log renaming action
}
}
}
}
在此先感谢您提供的任何帮助以使该脚本正常运行。
设置每 5 分钟触发一次,但每次都失败,而不是重命名文件名
问题:
当通过触发器自动调用时,传递给被调用/触发函数的第一个参数通常是事件对象
e
。因此,iA
将是一个事件对象e
,并且此事件对象不是数组,因此没有indexOf
方法。因此,你得到解决方案:
iA
或者在函数内部声明样本:
或者
有关的:
将变量传递给函数时,我收到“无效参数”,但当我进行硬编码时,它可以在 Apps 脚本中工作