我的投资表格里有几个数据,比如陆金所账户的市值、HSI长期期权的价格数据,网上抓不到,得自己上传。

过去我的做法是打开表格,输入数据,然后再把几张长期记录表格里的日期加上一行,相关数据拉一行。

这个过程比较机械,而且由于国内有墙,即使有梯子,偶尔还会碰到失灵,做起来有些麻烦。

能不能直接手机上弹出几个对话框,我把需要的数据输入,然后程序把我后面的工作全部搞定?

可以的,这两天尝试了几个方案:

1 最方便的zapier,但是有试用期,到期后免费版只能做两步,而且数量和执行次数有限制。

2 ifttt,免费,也是两步,而且只能更新特定单元格或者某一行。理论上设置几项任务是能完成的,但是太麻烦。

3 最后决定自己学一下google的script,以前用excel的vba我是编写过录入程序的。

下面记录一些学到的知识点:

1、  if函数写法   if( a==b) {c=d; e=f; }

2、取指定的表格

var app = SpreadsheetApp;
var sheetxxx = app.getActiveSpreadsheet().getSheetByName(“2019”);

3 、取数据

如果就一张表,下面这么写

var aaa=SpreadsheetApp.getActive().getRange(“A1”).getValue();

如果要指定读取某表格的数据

var app = SpreadsheetApp;

var sheetxxx = app.getActiveSpreadsheet().getSheetByName(“2019”);

var aaa = sheetxxx.getRange(“A1”).getValue();

把A1的数据拿到aaa

4 、设置数据

SpreadsheetApp.getActiveSheet().getRange(行的数字 ,列的数字).setValue(aaa);

把aaa的数据放到制定的行和列,要写入指定表格参照上一条

5、tigger触发器

我需要在上传数据之后,触发一段程序,做自己的任务。googlesheet有几个直接能用的触发器,比如onOpen,onEdit。我试了一下onEdit,手动输入改动的时候能触发,用api上传数据的时候不能触发,所以我需要用到的应该是onchange触发,也就是有改动就触发。

这个触发需要授权

function createSpreadsheetChangeTrigger() 
{ var ss = SpreadsheetApp.getActive(); 
ScriptApp.newTrigger('onChange') 
.forSpreadsheet(ss)
.onChange()
.create();
}

新建一个script,把上面代码复制进去保存执行一下,就会有授权窗口弹出来,授权完成就可以用onChange()。

参考:https://developers.google.com/apps-script/reference/script/spreadsheet-trigger-builder#onChange()

现在写一个script

onChange(){

if(SpreadsheetApp.getActive().getRange(“A1”).getValue()==1){    }

}

当A1格子数据为1的时候,执行一段代码。可以自己在表格里用公式写好,让数据上传之后A1为1

 

最终的任务流程是,

1、手机上运行shortcut,弹出输入窗口输入几项需要的数据

2、程序将数据put到ifttt的webhook

3、webhook触发后执行插入行数据到指定googlesheet表格

4、表格中的开关(指定单元格)监测到数据上传,变为1,触发自己写在onChange()里的命令

这个过程里不再需要翻墙、不用打开表格,不用流程化的数据录入。

15年前我刚进大学,当时用excel的时候,数据都是手输的。

10年前用pc软件可以作为数据源链接到excel,数据还是人工录入,公式什么的会用了

5年前用xml直接抓网上想要的数据链接到excel,数据用vba程序输入

3年前放弃用excel转到googlesheet,数据源网络抓取,数据人工录入

现在数据自动抓取,用程序录入,数据自动更新并发布在网络上。

技术进步真是快。

有回复请通知我
提醒

2 评论
内联反馈
查看所有评论
chunk998
5 年 之前

http://www.google.cn/sheets/about/

.cn 的 能用吗 ?