我正在尝试从Google Spreadsheets中的公式中提取文本字符串。具体来说,我有一个包含HYPERLINK
公式的列,我希望使用自定义函数创建另一个列,其中包含公式的提取文本,以便在{{1}的单元格上调用函数将在另一个单元格中返回=HYPERLINK("https://twitter.com/jrosenberg6432/status/617013951184957440")
。
我从this help forum找到了这个非常有用的功能:
https://twitter.com/jrosenberg6432/status/617013951184957440
但是,此函数用提取的文本替换原始单元格,而不是保留原始单元格中的内容并将输出返回到另一列中。
我尝试编辑代码,但我是一个Javascript新手,所以想尽管这可能是一个小编辑。
答案 0 :(得分:1)
你可以试试这个:
cell = activeRange.getCell(cellRow, cellColumn);
var output_cell = activeRange.getCell(cellRow, (cellColumn + 1));
//Or put in the column number in which u want the output to be put
cellFormula = cell.getFormula();
.
.
.
//(Keep the rest of the code as it is)
然后,而不是在你的函数中写cell.setValue(extractedTextString);
,
这样做:
output_cell.setValue(extractedTextString);
所以,我在这里要做的是将新值放在原始列旁边的列中。
希望它有效:)
答案 1 :(得分:1)
帮助论坛上的帖子很旧。这是一个有效的解决方案。自己测试过。希望能帮助到你。请随时给我发问题(我没有足够的声誉发表评论)。
function myFunction() {
var formulas = SpreadsheetApp.getActiveRange().getFormulas();
var toPut = SpreadsheetApp.getActiveRange().offset(0, 1, SpreadsheetApp.getActiveRange().getNumRows(), 1);
var extracted = [];
for(var index in formulas){
var array = formulas[index];
for(var formulaIndex in array){
Logger.log("f:" + array[formulaIndex]);
extracted.push([array[formulaIndex].substring(array[formulaIndex].indexOf('"')+1, array[formulaIndex].lastIndexOf('"'))]);
}
}
toPut.setValues(extracted);
}
function onOpen(e){
SpreadsheetApp.getUi().createMenu("Testing").addItem("myFunc", 'myFunction').addToUi();
}