本文介绍了如何获取属性(粗体、斜体等)SpreadsheetApp中单元格文本值中的每个单词的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要Google Apps脚本中电子表格单元格中出现的句子的每个单词的属性。
例如,在下图中,&神经网络一词以粗体显示。我想要获取句子中每个单词的属性,以确定哪个单词具有什么风格。
以下是我用来获取单元格值(文本)的代码。
function getSheetsSelection(e) {
var text = '';
var ranges = SpreadsheetApp.getActive().getSelection().getActiveRangeList().getRanges();
for (var i = 0; i < ranges.length; i++) {
const range = ranges[i];
const numRows = range.getNumRows();
const numCols = range.getNumColumns();
for (let i = 1; i <= numCols; i++) {
for (let j = 1; j <= numRows; j++) {
const cell = range.getCell(j, i);
if (cell.getValue()) {
var cellTextStyle = cell.getValues()
}
}
}
}
}
注意:在此代码中,在cell
变量中,我们得到了一个名为getTextStyle()
的方法,但它返回的是整个单元格的样式,而不是单个单词。而在DocumentApp
中,我们得到文本,例如作为段落或文本,我们可以遍历所有单词并获得它们的属性。我们可以在SpreadsheetApp中执行类似于该段落的内容吗?
推荐答案
详细代码:
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("B1");
var rich_text = range.getRichTextValue();
var runs = rich_text.getRuns();
var words_bold = [];
for (var r of runs) {
var style = r.getTextStyle();
if (style.isBold()) words_bold.push(r.getText());
}
Logger.log(words_bold);
一行函数:
const bold_words_from = (cell) =>
SpreadsheetApp.getActiveSheet().getRange(cell).getRichTextValue().getRuns()
.filter(r=>r.getTextStyle().isBold()).map(r=>r.getText());
Logger.log(bold_words_from("B1"));
输入:
1 | 神经元(节点) | 它是神经网络的基本单元。 |
2 | 连接 | 它将一层中的一个神经元连接到另一层中的另一个神经元 |
3 | 偏差(偏移量) | 它是神经元的额外输入,INT一如既往1 |
4 | 输入形状 | 它是我们传递给输入层的输入矩阵的形状。 |
输出:
[ basis , neural network ]
以同样的方式,您可以获得斜体(isItalic()
)等。但它们不是单词。它们是"运行":
我不知道你到底想要什么。因此,如果这些运行应该以某种方式与单词对齐,那么您将如何使用这些运行取决于您。
这篇关于如何获取属性(粗体、斜体等)SpreadsheetApp中单元格文本值中的每个单词的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!