如何使用Google表格中的脚本将图像从一个单元格复制到另一个单元格?

时间:2020-06-17 12:43:24

标签: javascript image google-apps-script google-sheets

我有一个脚本,用于从Google表格中的表单复制数据。 (是的,我知道我只能使用Google表单,但与我合作的客户端希望将其全部保存在一个Google表格中) 这是我现在使用的代码,效果很好。它完全满足我的要求,但是有一个字段要放置图像。我进行了设置,以便用户转到“插入”,然后从那里将图像插入到单元格中。我可以手动将图像从一张纸复制并粘贴到另一张纸上,但是运行脚本时,它不会将图像复制到所有其他数据上。任何帮助都将是惊人的。这是脚本。该图像位于I3单元格中,正如我所说的,其他所有操作均按预期进行。

function submitData()  {
var ss        = SpreadsheetApp.getActiveSpreadsheet();
var formSS    = ss.getSheetByName("Form"); //Form Sheet
var datasheet = ss.getSheetByName("Data"); //Data Sheet

 //Input Values
 var values = [[formSS.getRange("E3").getValue(),
             formSS.getRange("I3").getValue(),
             formSS.getRange("E6").getValue(),
             formSS.getRange("I6").getValue(),
             formSS.getRange("E10").getValue(),
             formSS.getRange("I10").getValue(),
             formSS.getRange("E15").getValue(),
             formSS.getRange("I15").getValue(),
             formSS.getRange("E19").getValue(),
             formSS.getRange("I19").getValue(),
             formSS.getRange("E22").getValue(),
             formSS.getRange("I22").getValue(),
             formSS.getRange("E25").getValue(),
             formSS.getRange("I25").getValue(),
             formSS.getRange("E28").getValue()]];

datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 15).setValues(values);
formSS.getRange('E3:E29').clearContent();
formSS.getRange('I3:I29').clearContent();


} 

1 个答案:

答案 0 :(得分:1)

我已经修改了您的脚本以适合数据表中的图像。

重要:取消合并表格上的图片单元格,并将背景保留为白色。脚本将要执行的操作是将值从“表单”移动到“数据”(背景颜色也会移动)

脚本将单独获取第一个值,并将其放在第一列,最后一行+1。

现在,最后一行是必需的行(不是最后的+1),然后脚本将移动图像并像以前一样插入其他值。

脚本:

function submitData() {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var formSS    = ss.getSheetByName("Form"); //Form Sheet
  var datasheet = ss.getSheetByName("Data"); //Data Sheet

  //Input Values
  var values = [[formSS.getRange("E6").getValue(),
                 formSS.getRange("I6").getValue(),
                 formSS.getRange("E10").getValue(),
                 formSS.getRange("I10").getValue(),
                 formSS.getRange("E15").getValue(),
                 formSS.getRange("I15").getValue(),
                 formSS.getRange("E19").getValue(),
                 formSS.getRange("I19").getValue(),
                 formSS.getRange("E22").getValue(),
                 formSS.getRange("I22").getValue(),
                 formSS.getRange("E25").getValue(),
                 formSS.getRange("I25").getValue(),
                 formSS.getRange("E28").getValue()]];

  // Get the first value and insert into the first column
  var firstColumn = formSS.getRange("E3").getValue()
  datasheet.getRange(datasheet.getLastRow()+1, 1,).setValue(firstColumn);

  // Get the image and intert into the second column of the same row
  var image = formSS.getRange("I3").moveTo(datasheet.getRange(datasheet.getLastRow(), 2));

  // Get all the other values and insert them into the other columns of the same row
  datasheet.getRange(datasheet.getLastRow(), 3, 1, 13).setValues(values);
  formSS.getRange('E3:E29').clearContent();
  formSS.getRange('I3:I29').clearContent();

}