我已经制作了一个运行良好的脚本来复制单元格* OnEdit(表格2上的col16) Col16 =“是”)到工作表(现在是Col4)上的自定义列的最后一行。但是我在工作表上有一个基于查询的数据,因此我的脚本只有在我用手输入“是”时才复制数据。这就是为什么现在我需要按按钮来运行这个脚本,或者可能是一个时间驱动的触发器。无法通过按钮使其工作。如何通过点击按钮来更改以下脚本以使其可以工作?如何将OnEdit脚本转换为运行按钮脚本(将规则中的单元格从1张复制到另一张)
function onEdit(e) {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
if (sheet.getName() !== '2' || e.range.getColumn() !== 16 || e.value !== 'Yes') return;
var value = e.range.offset(0,-12,1,1).getValue();
sheet = e.source.getSheetByName('1');
var grd = sheet.getRange("D:D").getValues();
var maxIndex = grd.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sheet.getRange(maxIndex+2,e.range.getColumn()-12,1,1).setValue(value);
}
更新:我试图改变我这样的脚本,它分配给按钮,点击按钮 - 它说“跑.....那就完了......”但之后不要复制任何东西(但它在OnEdit(e)时有效,并且我没有收到任何错误 但是,只是将“OnEdit(e)”更改为“copymissings()”是不够的,我需要更改在一些代码,但我不知道究竟是什么请帮助:
function copymissings() {
var s = SpreadsheetApp.getActive();
if (s.getName() !== '2' || range.getColumn() !== 16 || value !== 'Yes') return;
var value = range.offset(0,-12,1,1).getValues();
sht = s.getSheetByName('1');
var grd = sheet.getRange("D:D").getValues();
var maxIndex = grd.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sht.getRange(maxIndex+2,range.getColumn()-12,1,1).setValues(value);
}
可视化: CLICK TO SEE GIF
的可能的复制[你如何使用应用程序脚本在谷歌电子表格中添加细胞内的UI?](https://stackoverflow.com/questions/6876819/how-do-you-add-ui-inside -cells-in-a-google-spreadsheet-using-app-script) –
你是什么意思,你不能让它按钮运行?你尝试过什么?你收到错误信息了吗? –
嗨,我已更新我的帖子 – Stz