【发布时间】:2022-12-05 12:11:21
【问题描述】:
任务:将 .csv 报告从共享服务器文件夹移动并重命名到我的 Google 云端硬盘。此时我的应用程序脚本将接管并导入到指定的工作表中。应用程序脚本嵌入到每张工作表中(总共 7 张),但它们都是完全相同的代码(针对特定文件和工作表进行了更改)。
问题 1:批处理脚本在手动运行时每次都能完美运行,但在计划时,有时它不会重命名我的文件(但仍会移动它们)。
问题 2:应用程序脚本时好时坏,有时运行完美,有时因错误而失败
“TypeError:无法读取 null 的属性‘clearContents’”。
因此工作表没有更新,我的驱动器中有 csv 文件,什么也不做。
批处理脚本
@echo off ren "\\Server\Folder\subfolder\DataDaily-Emb Smalls-*.csv" smalls.csv ren "\\Server\Folder\subfolder\DataDaily-HP & Laser-*.csv" hp.csv ren "\\Server\Folder\subfolder\DataDaily-Emb Hats-*.csv" hats.csv ren "\\Server\Folder\subfolder\DataDaily-Embroidery-*.csv" emb.csv ren "\\Server\Folder\subfolder\DataDaily-Screen Print-*.csv" sp.csv ren "\\Server\Folder\subfolder\DataDaily-Database-*.csv" database.csv robocopy \\Server\Folder\subfolder "G:\My Drive\Dashboard" /MOV /XF *.batApps 脚本示例 从这个论坛上的不同帖子中蹒跚而行,它适用于除这张之外的所有其他表格
function RecImport() { const csvFolderName = 'FolderName'; var file = DriveApp.getFilesByName("rec.csv").next(); var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("rec"); sheet.clearContents(); sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); DriveApp.getFilesByName("rec.csv").next().setTrashed(true); }其他工作表代码始终如一的示例
function ImportSmallsCSVfromDrive() { const csvFolderName = 'FolderName'; var file = DriveApp.getFilesByName("smalls.csv").next(); var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('smalls'); sheet.clearContents(); sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); DriveApp.getFilesByName("smalls.csv").next().setTrashed(true); }最终,我在这里不知所措,因为一切看起来都应该正常工作,但我仍然与我的批处理脚本重命名不一致,并且我的应用程序脚本执行失败。我错过了什么?
【问题讨论】:
标签: csv batch-file google-apps-script google-sheets batch-rename