我使用google脚本来安排数据的移动、清理和归档。我们最近有一个脚本失败,它将员工联系人聚合到主列表中。它看起来只失败了一次,但在一次重要的通信失败之前就失败了。它似乎无法调用所需的csv文件,但查看另一个脚本的日志,它看起来该文件确实存在。除了将此归因于google应用程序脚本服务的随机故障之外,还有没有人有什么建议?
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@');
}发布于 2020-03-05 15:08:10
试试这个:
它可能不能解决问题,但当它发生时,它应该会给您留下更多的信息。
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;
}发布于 2020-03-12 17:38:18
出现错误"TypeError: Cannot read property " length“from undefined”是因为在csvData为空数组(因为.csv文件为空)时尝试访问csvData数组的第一个值的长度引起的,当csvData数组为空时,可以通过使用和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);
}https://stackoverflow.com/questions/60534172
复制相似问题