【问题标题】:Batch File Running but not Following All Steps/Apps Script also hit and miss批处理文件正在运行但未遵循所有步骤/应用程序脚本也时有发生
【发布时间】: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 *.bat

Apps 脚本示例 从这个论坛上的不同帖子中蹒跚而行,它适用于除这张之外的所有其他表格

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


    【解决方案1】:

    当您按计划更改文件时,文件锁定通常是个问题。您可以通过在计划的重命名之前复制文件来证明这一点。复制通常会在文件被锁定时成功,然后可以进行更改。

    这可能不适合您的业务案例(也许您不能先复制它们),但它会帮助您识别问题。

    您可以将其添加到您的 robocopy 以在计划时进行记录。您应该会收到有关失败文件的详细错误消息。

    >> c:log.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多