我有一个脚本可以根据答案移动行。我可以根据另一个单元格的答案添加一个带有静态句子的单元格吗?
例如,如果Spreadsheet1中的X1为“是”,则会添加句子“您的工作成功”。到Spreadsheet2中的单元格F1?
这是我的剧本:
function onEdit(e) {
var columnNumberToWatch = 24; // column A = 1, B = 2, etc.
var valueToWatch = ["Yes", "NA"];
if ( e.range.getColumn() == columnNumberToWatch && valueToWatch.indexOf(e.range.getValue()) >=0 ) {
var sourceSheetName = "Q2 2015 v2";
var destSheetName = "2015 Backyard Badge";
var sourceRow = e.range.getRow();
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheetName);
var destSheet = SpreadsheetApp.openById("1g3yhsACEWAT4dzAPjB-WaizmivIjnpISEoF3mxiRik4").getSheetByName(destSheetName);
var destRow = destSheet.getLastRow() + 1;
if ( destSheet.getMaxRows() < destRow) {
destSheet.insertRowAfter(destSheet.getLastRow());
}
var columnMap = {
'D' : 'A',
'W' : 'B',
'A' : 'C',
'B' : 'D',
'W' : 'I',
'X' : 'J'
};
var columnList = [];
for (var column in columnMap) {
if (columnMap.hasOwnProperty(column)) {
columnList.push(column);
}
};
for (var i = 0; i < columnList.length; i++) {
var sourceRangeText = columnList[i] + sourceRow;
var destRangeText = columnMap[columnList[i]] + destRow;
var sr = sourceSheet.getRange(sourceRangeText);
var dr = destSheet.getRange(destRangeText);
var sourceVal = sr.getValue();
dr.setValue(sourceVal);
}
}
}
提前致谢。
答案 0 :(得分:0)
使用调试器,一次一行地执行代码。为此,您需要对代码进行一些更改。硬编码一些值,仅用于测试:
function onEdit(e) {
var editedCol = 24; //e.range.getColumn()
var editedValue = 99; //e.range.getValue()
var editedRow = 10; //e.range.getRow()
var columnNumberToWatch = 24; // column A = 1, B = 2, etc.
var valueToWatch = ["Yes", "NA"];
if (editedCol == columnNumberToWatch && valueToWatch.indexOf(editedValue) >=0 ) {
上面的代码会从某些地方删除e.range.method()
,并将变量放在其中。这样您就可以调试代码了。这里的解释是长期放入评论部分,所以我把它放在答案中。通过这些更改,您无需先编辑电子表格即可运行代码。这是必需的,以便您可以运行调试器。
单击代码编辑器中的行号,以便显示红点。使用错误图标右侧字段中的“onEdit”功能,单击错误图标。然后单击“Step In”按钮运行一行代码。查看底部窗口中的所有值。逐步执行每行代码,直到找到意外结果。