Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何排除计划应用程序脚本的单个故障_Google Apps Script - Fatal编程技术网

Google apps script 如何排除计划应用程序脚本的单个故障

Google apps script 如何排除计划应用程序脚本的单个故障,google-apps-script,Google Apps Script,我使用谷歌脚本来安排移动、清理和归档数据。我们最近有一个脚本失败,它将员工联系人聚合到一个主列表中。它似乎只失败了一次,但在一次重要的通信中断之前失败了。它似乎无法调用所需的csv文件,但查看另一个脚本的日志,该文件似乎确实存在。除了将此归因于随机的谷歌应用程序脚本服务失败之外,还有人有其他建议吗 function import() { importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A01_Contacts.csv'

我使用谷歌脚本来安排移动、清理和归档数据。我们最近有一个脚本失败,它将员工联系人聚合到一个主列表中。它似乎只失败了一次,但在一次重要的通信中断之前失败了。它似乎无法调用所需的csv文件,但查看另一个脚本的日志,该文件似乎确实存在。除了将此归因于随机的谷歌应用程序脚本服务失败之外,还有人有其他建议吗

function import() {
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A01_Contacts.csv','01')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A02_Contacts.csv','02')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A03_Contacts.csv','03')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A04_Contacts.csv','04')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A05_Contacts.csv','05')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A06_Contacts.csv','06')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A07_Contacts.csv','07')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A08_Contacts.csv','08')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A09_Contacts.csv','09')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A10_Contacts.csv','10')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A11_Contacts.csv','11')
 importCSVFromGoogleDrive('1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-','A12_Contacts.csv','12')


}


function importCSVFromGoogleDrive(FolderID,FileName,SheetName) {
  var folder =DriveApp.getFolderById(FolderID)
  var file = folder.getFilesByName(FileName).next();
  var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(SheetName);  
  sheet.clear();
  sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
 // You can use commands like the following to dictate the data formatting of some columns after     import
  // sheet.getRange("R:R").setNumberFormat('@STRING@');

}
试试这个:

它可能无法解决问题,但当问题发生时,它会给您留下更多的信息

function import() {
  var fA=[{filename:'A01_Contacts.csv',sheetname:'01'},{filename:'A02_Contacts.csv',sheetname:'02'},{filename:'A03_Contacts.csv',sheetname:'03'},{filename:'A04_Contacts.csv',sheetname:'04'},{filename:'A05_Contacts.csv',sheetname:'05'},{filename:'A06_Contacts.csv',sheetname:'06'},{filename:'A07_Contacts.csv',sheetname:'07'},{filename:'A08_Contacts.csv',sheetname:'08'},{filename:'A09_Contacts.csv',sheetname:'09'},{filename:'A10_Contacts.csv',sheetname:'10'},{filename:'A11_Contacts.csv',sheetname:'11'},{filename:'A12_Contacts.csv',sheetname:'12'}];
  var id='1vnTdA0yJEra1zCwLv5PKGxkTSrGxA4G-';
  Logger.log(importCSV({files:fA,folderid:id}));
}

function importCSV(obj) {
  var folder=DriveApp.getFolderById(obj.folderid);
  var ss=SpreadsheetApp.getActive();
  obj['status']=[];
  obj.files.forEach(function(O,i){
    try {
      var csvData=Utilities.parseCsv(folder.getFilesByName(O.filename).next().getBlob().getDataAsString());
      if(csvData) {
        var sh=ss.getSheetByName(O.sheetName);
        sh.clear();
        sh.getRange(1,1,csvData.length,csvData[0].length).setValues(csvData);
        obj.status=Utilities.formatString('Success: FileName: %s SheetName: %s',O.filename,O.sheetname);
      }
    }
    catch(e) {
      obj.status=Utilities.formatString('Error: %s, Failure: FileName: %s SheetName: %s',e,O.filename,O.sheetname);
    }
  });
  return obj;
}
csvData
为空数组时(因为.csv文件为空),试图访问
csvData
数组的第一个值的长度会导致错误“TypeError:无法从未定义的”中读取属性“length”,当
csvData
数组为空时,可以使用and
if
来防止这种情况,如下所示:

function importCSVFromGoogleDrive(FolderID,FileName,SheetName) {
  var folder =DriveApp.getFolderById(FolderID)
  var file = folder.getFilesByName(FileName).next();
  var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(SheetName);  
  sheet.clear();
  if( csvData.length == 0) { return }
  sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}

有时,当您使用驱动器api调用文件时会出现延迟,脚本将继续运行,就好像文件不存在一样。你可能想调查谷歌云的东西,或者其他一些文件存储选项。你能提供错误消息和它发生的地方吗?谢谢你的帮助!错误为TypeError:无法从undefined读取属性“length”。在ImportCsvFromGoogleDrive(Import:26)在Import(Import:8)在try循环中发出csv调用,直到成功为止,怎么样?看起来它失败的频率很低,这是有道理的,尽管您可能希望将其限制为10次或20次尝试。直到成功意味着如果它真的找不到它,就会有一个无止境的循环。