【发布时间】:2013-06-11 13:03:31
【问题描述】:
我正在为 Google Docs 电子表格编写一个脚本,以读取导演列表并将其添加到数组中(如果它们尚未出现在数组中)。
但是,对于包含在数组中的元素,我似乎无法让 indexOf 返回 -1 以外的任何内容。
谁能告诉我我做错了什么?或者指出一种更简单的方法?
这是我的脚本:
function readRows() {
var column = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("Director");
var values = column.getValues();
var numRows = column.getNumRows();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var directors = new Array();
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (directors.indexOf(row) == -1) {
directors.push(row);
} else {
directors.splice(directors.indexOf(row), 1, row);
}
}
for (var i = 2; i < directors.length; i++) {
var cell = sheet.getRange("F" + [i]);
cell.setValue(directors[i]);
}
};
【问题讨论】:
-
else 块似乎是多余的。它将 row 替换为 row。
-
我还要补充一点,值的“设置”可以更有效地完成,即在循环中使用 setValues() 而不是 setValue()。但我不想让我的回答过于复杂。如果您无法弄清楚如何进行此操作(或在此论坛上找到解决该问题的问答),您可能想发布一个新问题。
标签: javascript arrays google-apps-script google-sheets indexof