【发布时间】:2019-11-26 20:45:10
【问题描述】:
当从第 8 列的下拉列表中选择“已完成”时,我正在尝试让 google 表格自动复制一行并将其粘贴到另一个选项卡的底部。然后我希望它从该行中获取公式,清除该行,然后替换公式。该代码可以复制并粘贴到另一个选项卡,但我无法获取公式,清除行然后替换公式。我什至无法让它清除行。代码正确执行除了最后四行之外的所有内容。
这不是我的代码。我从一个网站上得到它并修改它以适合我的工作表。我对javascript有非常基本的了解。我需要保留原始行并仅填充公式,以便可以重复使用。我使用的是 copyTo 而不是 moveTo,因为该行正在由另一个工作表在上游引用,并且 moveTo 会导致上游电子表格上的公式自动更新到数据的新位置,而不是继续引用原始行。感谢您的任何帮助。
function myStorage() {
// moves a row from a sheet to another when a value is entered in a column
var sheetNameToWatch = "In Progress";
var columnNumberToWatch = 8;
var valueToWatch = "Completed";
var sheetNameToMoveTheRowTo = "Storage";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
// this is where it stops working. I'm not sure how to grab just the row of the active cell and do the following
var clearRange = sheet.getRange(range.getRow());
clearRange.getFormulas();
clearRange.clearContent();
clearRange.setFormulas();
}
}
【问题讨论】:
标签: google-apps-script google-sheets