获取当前单元格并将其复制到其他工作表google工作表

时间:2016-09-11 19:43:40

标签: google-apps-script google-sheets

我想在点击它时使用自定义按钮将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获得刚才的计算值。他们是计算好的。

1 个答案:

答案 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')) ;
}