前几天说到,sina股票接口不好使了,回显都是Kinsoku jikou desu!

昨天有网友说VBA或者python改写一下还可以用,但是我看网上没有现成的googlesheet的方案。于是,今天我认真读了一下google app script里面相关函数的帮助文档,学习正确的参数写法,成功在googlesheet上抓取数据。

方法如下:

1 表格里打开 app script

2 新建一个脚本sina.js

function myFunction() {
var app = SpreadsheetApp;
var url ="http://hq.sinajs.cn/list=sh600519,sh600900";
var options = {
  'method' : 'get',
  'headers' : {
    "Referer": "http://vip.stock.finance.sina.com.cn"
    }   
  };
var response = UrlFetchApp.fetch(url,options);
copySheetsina = app.getActiveSpreadsheet().getSheetByName("发布表");
copySheetsina.getRange("A1").setValue(response.getContentText("GBK"));
}

脚本新建了一个函数 myFunction(函数名可以自己取) ,变量url就是原来要抓数据的地址(多个代码可以逗号分隔写一起),这个根据需求自己写。代码里“发布表”是我要导入数据的sheet的名称,这个也需要你自己修改,改成sheet1,sheet2什么的。”A1″是指定的导入数据的单元格,也可以根据需要自己改。别的就不用改了。

3 新建一个定时器脚本timetigger.gs

function createTimeDrivenTriggers() {
ScriptApp.newTrigger("myFunction")
  .timeBased()
  .everyMinutes(5)
  .create();
}

.everyMinutes(5) 表示每五分钟执行一次。改成10么,就是每10分钟执行一次,根据需要自己改。

4 上面两个脚本写好以后,保存,再分别运行点几次,会弹出窗口需要授权访问,就是登陆一下自己google账号即可。

5 现在每5分钟,最新的数据就会抓到“发布表”的”A1”单元格了,但是格式还要处理一下。

6 在B2单元格里写

=TRANSPOSE(split(A1,";"))

在C2单元格里写

=split(B2,",")

这样数据就规整好了,后面就根据需要自己取数据吧。

7 股票期货外汇数据代码规则比较容易,期权的代码规则可以看下面两篇文章

新浪财经50ETF期权和上交所300ETF期权行情接口

新浪财经沪深300指数期权和商品期权行情接口

AFU24

感谢朋友发文,在你基础上稍微研究了下,改成了适合自己的。节省了我不少时间,非常感谢!

:-)

张智勇

感谢。有两个小错误,一是「”」写错了,二是B2应该是C2。像我完全不懂的代码的,试了好久才搞定。

谢谢,文章里改过来了