Google Sheets App Script下载解压ZIP提取CSV自定义函数求助
Google Sheets 自定义交易数据拉取函数开发说明
开发背景
- 正在开发Google Sheets自定义函数,用于从目标站点下载内嵌CSV交易数据的ZIP压缩包
- 待处理数据集共2200行,覆盖多交易标的(symbol)记录,包含12列字段
预期实现目标
- 拉取携带日期后缀的自定义URL对应ZIP文件,完成压缩包内CSV数据提取解析
- 实现筛选查询逻辑:根据输入的指定日期、交易标的参数,匹配选定属性对应的数值
- 结合传入的URL、日期、列属性、交易标的参数,在调用函数的单元格直接返回匹配结果
当前开发进度
- 已完成基础链路:可实现ZIP文件下载、解压、CSV格式解析,解析完成的数据会写入名为
Temp的临时工作表 - 未完成部分:数据筛选匹配、结果返回逻辑,需要对应开发指导
- 现有已编写代码如下:
/** * 导入指定日期的CSV交易数据 * * @param {URL} url 拼接了日期标识的待下载文件链接 * @param {string} symbol 需提取数据的交易标的 * @param {date} date 需提取数据的对应日期 * @param {string} attribute 需提取的字段属性 * @return 匹配条件的字段数值 * @customfunction */ function importbhav(url,symbol,date,attribute) { var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Temp') ; // 解压后CSV数据的临时存储工作表 var s1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1') ; // 格式化输出结果的目标工作表 var Cell_A = s1.getActiveRange().getValue(); // 关联日期的URL引用单元格 var Cell_B = s1.getActiveRange('$B$5:$B').getValue(); // 交易标的取值范围 var Cell_C = s1.getActiveRange('$D$4:$KO$4').getValue(); // 日期取值范围 var Cell_D = s1.getActiveRange('G1').getValue(); // 属性取值单元格 var url = Cell_A ; var symbol = Cell_B ; var date = Cell_C ; var Attribute = Cell_D // 字段名映射 var Attribute = [Dattributes_1,Dattributes_2,Dattributes_3,Dattributes_4,Dattributes_5,Dattributes_6,Dattributes_7,Dattributes_8,Dattributes_8,Dattributes_9] ; var Dattributes_1="SYMBOL" ; var Dattributes_2="SERIES" ; var Dattributes_3="OPEN" ; var Dattributes_4="HIGH" ; var Dattributes_5="LOW" ; var Dattributes_6="CLOSE" ; var Dattributes_7="LAST" ; var Dattributes_8="TOTTRDVAL" ; var Dattributes_9="TOTALTRADES" ; // 文件下载与解压逻辑 var zipblob = UrlFetchApp.fetch(url).getBlob(); var unzipblob = Utilities.unzip(zipblob); var unzipstr=unzipblob[0].getDataAsString(); var csv = Utilities.parseCsv(unzipstr); ss.getRange(1, 1, csv.length, csv[0].length).clearContent().setValues(csv); // 待补充:条件匹配与结果返回逻辑 }
内容的提问来源于stack exchange,提问作者Robin U
相关产品推荐
相关产品推荐

