如何 'For Loop' 通过 Google 文档 table
How to 'For Loop' through Google Documents table
我在 Google 文档中有一个 table(不是 Sheet)。第一列包含一个 ID 号,该 ID 号与其在提交数据的 Google Sheet 中的相对 ID 相匹配。
//This is what the table looks like
//[id][name][favourite cheese]
//[3 ][bob ][chedder]
//[4 ][jane][old english]
我需要
- 遍历 Google DOCUMENT table.
中的每一行
- 判断第一列单元格是否包含[=36=](与身份证号相同)
- 如果它包含文本,则用新数据更新该行
这是我当前的代码:
// Grab the Table
var body = DocumentApp.openById('theId').getBody(),
searchElement = body.findElement(DocumentApp.ElementType.TABLE),
element = searchElement.getElement(),
table = element.asTable();
该段代码用于获取 table,因为您无法在 Google 文档中命名 table。
我很惊讶找不到更多信息。我正在尽最大努力 utilize the documentation 并且感觉我将使用 'For Loop' 来搜索每一行但是我需要 .getElement(row) 来循环吗?我可以使用 .findText() 还是会调出包含文本的 table 的每个部分。也许我可以以某种方式在每一行的第一列中循环 .getElement(row) 和 .findText()?
我知道循环是一个相当基本的 Javascript 概念,只是 Google 文档的处理方式让我感到困惑。
你是对的,你可以使用 Javascript for
循环遍历行。
for (var i = 0; i < table.getNumRows(); ++i) {
var row = table.getRow(i);
Logger.log(row.getText());
}
获得该行后,您可以随心所欲地使用它,例如从第一个单元格中获取文本:
row.getCell(0).getText()
JavaScript 中的字符串比较可以很简单 ===
,然后您可以编辑目标单元格的文本(在本例中为第二列):
if (row.getCell(0).getText() === id) {
row.getCell(1).setText('foo');
}
for (let r = 0 ; r < table.getNumRows(); r++) {
row = table.getRow(r);
for(let c = 0; c < row.getNumChildren(); c++){
Logger.log(table.getCell(r,c).getText());
}
}
对于“完整”for 循环,您可以利用该行并调用其子项的编号...
我在 Google 文档中有一个 table(不是 Sheet)。第一列包含一个 ID 号,该 ID 号与其在提交数据的 Google Sheet 中的相对 ID 相匹配。
//This is what the table looks like
//[id][name][favourite cheese]
//[3 ][bob ][chedder]
//[4 ][jane][old english]
我需要
- 遍历 Google DOCUMENT table. 中的每一行
- 判断第一列单元格是否包含[=36=](与身份证号相同)
- 如果它包含文本,则用新数据更新该行
这是我当前的代码:
// Grab the Table
var body = DocumentApp.openById('theId').getBody(),
searchElement = body.findElement(DocumentApp.ElementType.TABLE),
element = searchElement.getElement(),
table = element.asTable();
该段代码用于获取 table,因为您无法在 Google 文档中命名 table。
我很惊讶找不到更多信息。我正在尽最大努力 utilize the documentation 并且感觉我将使用 'For Loop' 来搜索每一行但是我需要 .getElement(row) 来循环吗?我可以使用 .findText() 还是会调出包含文本的 table 的每个部分。也许我可以以某种方式在每一行的第一列中循环 .getElement(row) 和 .findText()?
我知道循环是一个相当基本的 Javascript 概念,只是 Google 文档的处理方式让我感到困惑。
你是对的,你可以使用 Javascript for
循环遍历行。
for (var i = 0; i < table.getNumRows(); ++i) {
var row = table.getRow(i);
Logger.log(row.getText());
}
获得该行后,您可以随心所欲地使用它,例如从第一个单元格中获取文本:
row.getCell(0).getText()
JavaScript 中的字符串比较可以很简单 ===
,然后您可以编辑目标单元格的文本(在本例中为第二列):
if (row.getCell(0).getText() === id) {
row.getCell(1).setText('foo');
}
for (let r = 0 ; r < table.getNumRows(); r++) {
row = table.getRow(r);
for(let c = 0; c < row.getNumChildren(); c++){
Logger.log(table.getCell(r,c).getText());
}
}
对于“完整”for 循环,您可以利用该行并调用其子项的编号...