我想在点击它时使用自定义按钮将3个值从sheet1复制到sheet2。
我在sheet1上
A B C D F G
1 bbb kkkk 12 2 3 my custom button here
2 hhhh tttt 13 6 8 my custom button here
3 ttt qqqq 16 1 4 my custom button here
和我的表2
A B C
1
我想要的是当我点击my custom button
时我想要将值从单张按钮的行复制到图1中的B1 C1 F1到A1 B1 C1。
我试过这个
function CopyPaste() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
sheet1.getRange('G2').getValue().copyTo(sheet2.getRange('A45')) ;
sheet1.getRange('I2').getValue().copyTo(sheet2.getRange('B45')) ;
sheet1.getRange('K2').getValue().copyTo(sheet2.getRange('C45')) ;
}
但这总是得到G2 I2 K2而不是点击的行。从这个我没有得到计算值,我得到了我不想要的公式脚本。我想从sheet1获得刚才的计算值。他们是计算好的。
答案 0 :(得分:2)
假设通过"自定义按钮"问题是指带有指定脚本的图像,它们没有像On Open等触发器一样自动分配event object。
一种解决方案是为每个设置创建参数化主函数和函数,以便由"自定义按钮"触发参数。如果每行都有一个按钮,并且需要将行号作为参数发送,则每行需要一个函数。
实施例
function customButton_row1() {
CopyPaste(1);
}
function customButton_row2() {
CopyPaste(2);
}
function CopyPaste(row) {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
sheet1.getRange('G' + row).getValue().copyTo(sheet2.getRange('A45')) ;
sheet1.getRange('I' + row).getValue().copyTo(sheet2.getRange('B45')) ;
sheet1.getRange('K' + row).getValue().copyTo(sheet2.getRange('C45')) ;
}