Извините меня, поскольку я довольно новичок в этом и, возможно, упускаю что-то простое.
У меня есть электронная таблица, в которой я создаю данные из шаблона, запускаю над ним скрипт для создания форм, которые становятся пользовательскими задачами.URL-адрес редактирования из формы используется для выполнения задачи, и он записывает на основной лист (Sheet2) статус, вложения, штамп данных и адрес электронной почты.После этого я пытаюсь создать список задач, требующих согласований, с моего основного листа на другой лист (LOG) в другой электронной таблице, но у меня возникают проблемы с openByID
для моей целевой электронной таблицы.Это говорит, что это не определено.Я могу заставить это работать на листах в той же самой электронной таблице, но я хотел бы, чтобы это было в другой электронной таблице, если это возможно.Все это делается при изменении листа 2, когда состояние меняется на «да» и только для определенных задач (отчет о проверке, служебная записка, отчет о проверке)
function onChange() {
// moves a row from one sheet to another sheet when a value is entered in a column and another column has specific values
var columnNumberToWatch = /* column D */ 4; // column A = 1, B = 2, etc.
var valueToWatch = "yes";
var sheetNameToMoveTheRowTo = "LOG";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet2");
var cell = sheet.getActiveCell();
var activeRow = cell.getRow();
var taskCheck=sheet.getRange(activeRow, 2);
var target = SpreadsheetApp.openByID("my spreadsheet id");
var targetSheet = target.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
if (sheet.getName() != sheetNameToMoveTheRowTo &&
cell.getColumn() == columnNumberToWatch &&
cell.getValue().toLowerCase() == valueToWatch &&
(taskCheck.getValue() == "Verfication Report" || taskCheck.getValue() == "Maintenance Memo" || taskCheck.getValue() == "Check Report"))
{
sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
}
}