首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何排查定时app脚本单次故障

如何排查定时app脚本单次故障
EN

Stack Overflow用户
提问于 2020-03-05 04:26:49
回答 2查看 43关注 0票数 0

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

代码语言:javascript
运行
复制
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@');

}

enter image description here

EN

回答 2

Stack Overflow用户

发布于 2020-03-05 15:08:10

试试这个:

它可能不能解决问题,但当它发生时,它应该会给您留下更多的信息。

代码语言:javascript
运行
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2020-03-12 17:38:18

出现错误"TypeError: Cannot read property " length“from undefined”是因为在csvData为空数组(因为.csv文件为空)时尝试访问csvData数组的第一个值的长度引起的,当csvData数组为空时,可以通过使用和if来防止这种情况发生,如下所示:

代码语言:javascript
运行
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60534172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档