我想将数据移动到另一个有时间限制的电子表格,例如在中午 12 点,数据将自动移动,然后源中的数据将被删除(我认为通过使用触发器,但我不知道是否属实或不)。供您参考,以前我使用了复选框,但它对我来说效率较低(脚本如下),因为我有很多数据需要同时移动。谁能帮我制作剧本吗?谢谢
function onMyEdit(e) {
//e.source.toast('Entry');
var sh=e.range.getSheet();
//Logger.log(JSON.stringify(e));
if(sh.getName()=='DatabaseTemp' && e.range.columnStart==13 && e.value=="TRUE") {
//e.source.toast('Access');
e.range.setValue('FALSE');
var tss=SpreadsheetApp.openById('1qx-I_mv8Zxxxxxxxxxxxxxxxxxxxxxx');
var tsh=tss.getSheetByName('Database');
var v=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()-3).getValues();
Logger.log(v);
tsh.getRange(tsh.getLastRow()+1,1,v.length,v[0].length).setValues(v);
sh.deleteRow(e.range.rowStart);
}
}
工作表名称的示例为 “数据源”,工作表名称为 “数据库”
的目标或目标电子表格“1OWqOlqy_pfZXXXXXXxxxxxxx”function moveDataAutomatically() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var targetSpreadsheet = SpreadsheetApp.openById('1wWN8iocE0ZxII50P7p-vs8eReum3OAku6hdH3zmtW1I');
var targetSheet = targetSpreadsheet.getSheetByName('Sheet2');
var data = sourceSheet.getRange(2, 1, sourceSheet.getLastRow()-1, sourceSheet.getLastColumn()).getValues();
if (data.length > 0) {
targetSheet.getRange(targetSheet.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
for (var i = sourceSheet.getLastRow(); i > 1; i--) {
sourceSheet.deleteRow(i);
}
}
}
要运行此脚本
every day at 12 PM
,您需要在Google表格中设置触发器:
1.) 在 Apps 脚本编辑器中,单击左侧工具栏上的时钟图标以打开触发器页面。
2.) 单击右下角的 + 添加触发器。
3.) 将函数设置为`moveDataAutomatically。
4.) 将部署设置为 Head。
5.) 选择“时间驱动”作为事件源。
6.) 选择“日定时器”作为基于时间的触发器类型。
7.) 选择触发器运行所需的日期和时间。
8.) 保存触发器,您的脚本现在将每天自动运行一次。
用于可视化时间驱动触发器设置的附加图像:
数据来源
数据库