如何在sheetrock.js中使用callback选项?获取输出变量方法
How to get Sheetrock's output as a variable in the callback function?
Problem Description
我尝试将Sheetrock的查询输出作为变量,用作另一个函数的输入,但因JavaScript知识有限遇到困难,恳请帮助。我的代码如下:
var d = new Date(); var month = new Array(); month[0] = "Jan"; month[1] = "Feb"; month[2] = "Mar"; month[3] = "Apr"; month[4] = "May"; month[5] = "Jun"; month[6] = "Jul"; month[7] = "Aug"; month[8] = "Sep"; month[9] = "Oct"; month[10] = "Nov"; month[11] = "Dec"; var n = month[d.getMonth()]; var y = d.getFullYear(); $("#value").sheetrock({ url: 'https://docs.google.com/spreadsheets/d/1XSVP75fJkq34gLHhwIsEWOC3My-6xnbVURk4U_wotD0/edit#gid=0', query: "select C where B = "+ y +" and A = '"+ n +"'", callback: draw }); function draw(data, sheetrock,response) { console.log(); // how to get the output from sheetrock as a variable? }
请问如何在draw回调函数中获取Sheetrock的输出作为变量?
Answer
嘿,别发愁!Sheetrock已经把查询结果打包在回调函数的data参数里了,你只需要正确解析这个参数就能拿到想要的变量。
Sheetrock返回的data对象中,data.rows是查询到的所有行数据组成的数组——根据你的查询条件(匹配年份和月份),应该只会返回一行结果。每一行的cells属性对应该行的单元格数组,每个单元格的value属性就是单元格里的实际内容。
你可以这样修改你的draw函数:
function draw(data, sheetrock, response) { // 先确认是否有查询到有效数据 if (data.rows.length > 0) { // 提取C列的数值(因为你的查询语句是select C) var resultValue = data.rows[0].cells[0].value; console.log("Sheetrock返回的结果:", resultValue); // 现在你就可以把这个resultValue当作变量,传给其他需要它的函数啦 // 比如:yourTargetFunction(resultValue); } else { console.log("没有匹配到符合条件的数据哦"); } }
简单拆解下这段代码的逻辑:
data.rows[0]:取查询结果的第一行(你的条件只会匹配到一行数据)cells[0]:对应你查询的C列(因为只select了单个列,所以cells数组里只有一个元素).value:获取单元格里的具体内容
如果后续你的查询可能返回多行数据,也可以用循环遍历data.rows数组,逐个提取每行的单元格值哦。
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

