如何在单元格中获取自定义 google sheet 函数的结果
How to get results of a custom google sheet function in cells
我正在尝试获取 google sheet 中单元格中以下函数的结果。
我可以在脚本日志中得到结果,但我需要它在单元格中..有人可以添加到这个语法中,以便它的结果可以放在单元格中。
function scrapeDemo(url) {
var html = UrlFetchApp.fetch(url).getContentText();
var res = html.match(/<div class="cr_data rr_stockprice module">.+?(<table .+?<\/table>)/);
var document = XmlService.parse(res[1]);
var root = document.getRootElement();
var trNodes = root.getChild('tbody').getChildren();
trNodes.forEach((trNode) => {
var tdNodes = trNode.getChildren();
var fieldName;
var fieldValue;
tdNodes.forEach((tdNode, idx) => {
if (idx % 2 === 0) {
fieldName = tdNode.getValue().trim();
} else {
fieldValue = tdNode.getValue().trim();
console.log( fieldName + " : " + fieldValue );
}
} );
} );
}
我正在尝试获取脚本登录单元格中当前可用的结果。当我将 scrapeDemo(url) 放在一个单元格中时,它应该提供数据。它可以是 table,一列是字段名,下一列是字段值。
如果您有一个范围或想要构建一个数据范围并且您正在 google sheet 中执行脚本,您可以这样做:
var sheet = SpreadsheetApp.getActive().getSheetByName("NameOfTheSheet");
sheet.getActiveCell("A1").setValues(valueRange);
如果要自己写一个值一个值。使用:
var sheet = SpreadsheetApp.getActive().getSheetByName("NameOfTheSheet");
sheet.setActiveRange("A1").setValues(value);
如果你想在单元格中迭代,那么使用:
...
sheet.setActiveRange("A" + i).setValues(value);
i++;
...
问题正文中的脚本不包含 return 语句,但是 Google Sheets 自定义函数应该有一个 returning [=] 支持的值/对象20=] Sheets (number, string, boolean, date, or an Array of Arrays of supported values/objects), example:
/**
* If a and b are numbers these values will be added
* If a or b are strings the these values will be concatenated
*/
function myFunction(a,b){
return a + b;
}
/**
* Returns a Matrix of X having rowNum by colNum
*
*/
function XMATRIX(rowNum,colNum){
var output = [];
for(var i = 0; i < rowNum; i++){
output[i] = [];
for(var j = 0; j < colNum; j++){
output[i][j] = 'X';
}
}
return output
}
资源
https://developers.google.com/apps-script/guides/sheets/functions
我正在尝试获取 google sheet 中单元格中以下函数的结果。 我可以在脚本日志中得到结果,但我需要它在单元格中..有人可以添加到这个语法中,以便它的结果可以放在单元格中。
function scrapeDemo(url) {
var html = UrlFetchApp.fetch(url).getContentText();
var res = html.match(/<div class="cr_data rr_stockprice module">.+?(<table .+?<\/table>)/);
var document = XmlService.parse(res[1]);
var root = document.getRootElement();
var trNodes = root.getChild('tbody').getChildren();
trNodes.forEach((trNode) => {
var tdNodes = trNode.getChildren();
var fieldName;
var fieldValue;
tdNodes.forEach((tdNode, idx) => {
if (idx % 2 === 0) {
fieldName = tdNode.getValue().trim();
} else {
fieldValue = tdNode.getValue().trim();
console.log( fieldName + " : " + fieldValue );
}
} );
} );
}
我正在尝试获取脚本登录单元格中当前可用的结果。当我将 scrapeDemo(url) 放在一个单元格中时,它应该提供数据。它可以是 table,一列是字段名,下一列是字段值。
如果您有一个范围或想要构建一个数据范围并且您正在 google sheet 中执行脚本,您可以这样做:
var sheet = SpreadsheetApp.getActive().getSheetByName("NameOfTheSheet");
sheet.getActiveCell("A1").setValues(valueRange);
如果要自己写一个值一个值。使用:
var sheet = SpreadsheetApp.getActive().getSheetByName("NameOfTheSheet");
sheet.setActiveRange("A1").setValues(value);
如果你想在单元格中迭代,那么使用:
...
sheet.setActiveRange("A" + i).setValues(value);
i++;
...
问题正文中的脚本不包含 return 语句,但是 Google Sheets 自定义函数应该有一个 returning [=] 支持的值/对象20=] Sheets (number, string, boolean, date, or an Array of Arrays of supported values/objects), example:
/**
* If a and b are numbers these values will be added
* If a or b are strings the these values will be concatenated
*/
function myFunction(a,b){
return a + b;
}
/**
* Returns a Matrix of X having rowNum by colNum
*
*/
function XMATRIX(rowNum,colNum){
var output = [];
for(var i = 0; i < rowNum; i++){
output[i] = [];
for(var j = 0; j < colNum; j++){
output[i][j] = 'X';
}
}
return output
}
资源
https://developers.google.com/apps-script/guides/sheets/functions