数据通过URL传输到另一张表格:
https://docs.google.com/spreadsheets/d/1gFuY2i50Vxdl5kx7iHZAupILAW2u35KYSRzCKKXMWIk/edit#gid=0
数据(特定行)在触发器
onEdit()
上传输,并检查行A
是否不为空且行F
是否为“问题案例”。如果 A 不为空且 F 是问题情况,则当前工作表中当前行的数据将复制到另一工作表。
我从当前工作表中获取特定列:
Name, Date, Time, City, Status
以及G
列上的一些特定单元格并将其复制到另一张工作表。我只选取发生问题案例编辑的行。
我有一个代码:
function onEdit(e) {
try {
var sheet = e.source.getSheetByName('Daily report');
if (!sheet || e.range.columnStart < 6 || e.range.columnStart > 6) {
return;
}
var ui = SpreadsheetApp.getUi();
var title = "Message Box";
// Получаем данные из редактируемой строки
var row = e.range.rowStart;
var valueA = sheet.getRange('A' + row).getValue();
var valueF = sheet.getRange('F' + row).getValue();
// Проверяем, что строка C не пустая и значение в столбце G равно "Проблемный кейс"
if (valueA !== '' && valueF === 'Problem Case') {
// Получаем данные для записи в другой документ
var dataToSave = [
sheet.getRange('A' + row).getValue(),
sheet.getRange('B' + row).getValue(),
sheet.getRange('C' + row).getValue(),
sheet.getRange('D' + row).getValue(),
sheet.getRange('E' + row).getValue(),
sheet.getRange('F' + row).getValue(),
sheet.getRange('G3').getValue(),
sheet.getRange('G4').getValue(),
sheet.getRange('G5').getValue()
];
ui.alert(title, "TEST", ui.ButtonSet.OK);
var targetURL = "https://docs.google.com/spreadsheets/d/1gFuY2i50Vxdl5kx7iHZAupILAW2u35KYSRzCKKXMWIk/edit#gid=0";
var targetDoc = SpreadsheetApp.openByUrl(targetURL);
var targetList = targetDoc.getSheetByName("Sheet1");
targetList.getRange(1, 1, dataToSave.length, dataToSave[0].length).setValues([dataToSave]);
}
} catch (error) {
// Лог ошибки
Logger.log('Error: ' + error.toString());
}
}
如果列
F
已编辑,则会检查条件并复制数据。 OnEdit 事件起作用并将数据复制到数组:dataToSave。但是当我尝试在脚本中定义另一个文档和工作表时,就会出现问题。数据没有传递到另一张纸。但是编辑上的数组dataToSave填充了相应的数据
我通过目标文档的链接授予了编辑访问权限。我授予脚本编辑我的 Google 表的权限。但无论如何,什么也没发生。
SourceSheet(示例数据)可用:SourceSheet DestinationSheet(示例数据)可用:DestinationSheet
请设置可安装的触发器
function onMyEdit(e) {
lle.source.toast("Entry");
const sh = e.range.getSheet();
if (sh.getName() == 'Daily Report' && e.range.columnStart > 5 && e.range.columnStart < 7) {
//e.source.toast("Gate1")
var title = "Message Box";
var colA = sh.getRange(e.range.rowStart, 1).getValue();
var colF = sh.getRange(e.range.rowStart, 6).getValue();
if (colA !== '' && colF === 'Problem Case') {
var vs = sh.getRange(e.range.rowStart, 1, 1, 6).getValues().flat()
vs = vs.concat(sh.getRange(3, 7, 3).getValues().flat());
e.source.toast("Message",title);//I would use a toast because it will go away by itself and not slow down any other editing
var tss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1gFuY2i50Vxdl5kx7iHZAupILAW2u35KYSRzCKKXMWIk/edit#gid=0");
var tsh = tss.getSheetByName("Sheet1");
tsh.getRange(tsh.getLastRow() + 1, 1, 1, vs.length).setValues([vs]);
}
}
}