Javascript自定义函数从公式Google Spreadsheets中提取文本字符串

时间:2015-07-08 17:52:21

标签: javascript google-apps-script google-sheets

我正在尝试从Google Spreadsheets中的公式中提取文本字符串。具体来说,我有一个包含HYPERLINK公式的列,我希望使用自定义函数创建另一个列,其中包含公式的提取文本,以便在{{1}的单元格上调用函数将在另一个单元格中返回=HYPERLINK("https://twitter.com/jrosenberg6432/status/617013951184957440")

我从this help forum找到了这个非常有用的功能:

https://twitter.com/jrosenberg6432/status/617013951184957440

但是,此函数用提取的文本替换原始单元格,而不是保留原始单元格中的内容并将输出返回到另一列中。

我尝试编辑代码,但我是一个Javascript新手,所以想尽管这可能是一个小编辑。

2 个答案:

答案 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();
}