我编写了以下Google Spreadsheet脚本,尝试遍历所有选定的单元格,然后通过在值周围添加=CONCAT(REPT( CHAR( 160 ), 5),"' + value[row] + '")
来更新值以便添加缩进。
但是我在处理循环时遇到错误,我不确定如何修改代码以纠正/解决。我得到的错误是:TypeError: Cannot call method "setValue" of undefined.
有谁知道我应该改变什么?
var ss = SpreadsheetApp.getActiveSpreadsheet();
function indentText() {
var cells = ss.getActiveRange();
var values = cells.getValues();
row = [];
len = [];
Logger.log(values);
for (row = 0, len = values.length; row < len; row++) {
if (values[row] != '') {
cells[row].setValue('=CONCAT(REPT( CHAR( 160 ), 5),"' + value[row] + '")');
}
}
};
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Indent Text",
functionName : "indentText"
}];
sheet.addMenu("Indent Text", entries);
};
编辑:在查看我的代码后,我现在有了一个可行的解决方案。为了完整起见,我在这里添加了它:
var ss = SpreadsheetApp.getActiveSpreadsheet();
function indentText() {
var values = ss.getActiveRange().getValues();
var newValues = new Array();
for (i = 0; i < values.length; i++) {
if (values[i][0] != '') {
newValues.push(['=CONCAT(REPT( CHAR( 160 ), 5),"' + values[i][0] + '")']);
} else {
newValues.push(['']);
}
}
ss.getActiveRange().setValues(newValues);
};
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Indent Text",
functionName : "indentText"
}];
sheet.addMenu("Indent Text", entries);
};
如果有更好的方法可以实现这一点,那么当然会感兴趣。