繁体   English   中英

我想使用谷歌应用程序脚本在新的谷歌工作表中对不同工作表(位于不同电子表格)中的值求和

[英]I want to sum the values present in different sheets(located in different spreadsheets) in a new google sheet using google app script

我想使用谷歌应用程序脚本在新的谷歌工作表中添加不同工作表(位于不同电子表格中)中的值。 我对此很陌生,不知道如何继续。 如果有人可以帮助我,我将不胜感激。

最简单的方法是按 ID 或名称访问不同的电子表格,按名称访问相应的工作表,选择要复制的范围以及要粘贴和设置值的范围。 请注意,使用setValues()方法要求您的起始范围和目标范围具有相同的维度。 有关更多信息,请参阅 Apps 脚本参考。

https://developers.google.com/apps-script/reference/spreadsheet/range

function myFunction() {

var sheet_origin1=SpreadsheetApp.openById("your spreadsheet ID 1").getSheetByName("name of sheet 1");
var sheet_origin2=SpreadsheetApp.openById("your spreadsheet ID 2").getSheetByName("name of sheet 2"); 
var sheet_destination=SpreadsheetApp.openById("your spreadsheet ID 3").getSheetByName("name of sheet 3"); 

//choose your range of interest  
var range1=sheet_origin1.getRange("A1:D3");
var range2=sheet_origin2.getRange("A1:E2"); 
var destinationrange_1=sheet_destination.getRange("A1:D3");
var destinationrange_2=sheet_destination.getRange("A4:E5");  

//Here you add the values from different sheets to to different ranges of the destination sheet  
destinationrange_1.setValues(range1.getValues());
destinationrange_2.setValues(range2.getValues());
}

如果您想对不同工作表中单元格的值求和并将结果粘贴到目标工作表的相应单元格中 - 您可以这样做:

function myFunction() {

var sheet_origin1=SpreadsheetApp.openById("1wUzNCzdQyVCe8VkZghTUQz_0QEAiU6ONpW45kiGE_2U").getSheetByName("Sheet1");
var sheet_origin2=SpreadsheetApp.openById("1CD0yp_0_5u-UX_9J4Az38NirAMMvu5G7kksmLz3S0cw").getSheetByName("Sheet1"); 
var sheet_destination=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();


//define range as a string in A1 notation
var range="A1:D3"  
var values1=sheet_origin1.getRange(range).getValues();
var values2=sheet_origin2.getRange(range).getValues(); 
var destinationrange=sheet_destination.getRange(range);

//Here you sum the values of equivalent cells from different sheets
  for(var i=0; i<values1.length;i++)
  {
    for(var j=0; j<values1[0].length;j++)
    {
       sum=values1[i][j]+values2[i][j];
       destinationrange.getCell(i+1,j+1).setValue(sum);
    }
  } 
}

您需要将自己的电子表格 ID 和工作表名称添加到数据表中,然后这些工作表中的所有数据都将显示在比较表中。

function getData() {
  var ss=SpreadsheetApp.getActive();
  var ish=ss.getSheetByName('Data');
  var iA=ish.getDataRange().getValues();
  var dsh=ss.getSheetByName('Comparisons');
  dsh.clearContents();
  dsh.getRange('A1').setValue('Displaying Data from selected spreadsheets list in Data Sheet.').setFontWeight("Bold");
  for(var i=1;i<iA.length;i++) {
    if(iA[i][0] && iA[i][1]) {
      var css=SpreadsheetApp.openById(iA[i][0]);
      var csh=css.getSheetByName(iA[i][1]);
      var vA=csh.getDataRange().getValues();
      var desc=Utilities.formatString('Data from %s',iA[i][1]);
      dsh.getRange(dsh.getLastRow()+1,1).setValue(desc).setFontWeight("Bold");
      dsh.getRange(dsh.getLastRow()+1,1,vA.length,vA[0].length).setValues(vA);
    }
  }
}

这是我的数据表的格式:

在此处输入图片说明

这是我的比较表在与列出的其他两个电子表格一起运行后的样子:

在此处输入图片说明

从其他电子表格添加数据

function getData() {
  var ss=SpreadsheetApp.getActive();
  var ish=ss.getSheetByName('Data');
  var iA=ish.getDataRange().getValues();
  var dsh=ss.getSheetByName('Sum');
  dsh.clearContents();
  for(var i=1;i<iA.length;i++) {
    if(iA[i][0] && iA[i][1]) {
      var css=SpreadsheetApp.openById(iA[i][0]);
      var csh=css.getSheetByName(iA[i][1]);
      dsh.appendRow([csh.getRange(iA[i][2]).getValue()]);
    }
  }
  var rg=dsh.getRange(dsh.getLastRow()+1,1).setFormula("=Sum(" +  dsh.getRange(1,1,i-1,1).getA1Notation() + ")");
  rg.offset(0,1).setValue("Total").setFontWeight("Bold")
}

数据表:

在此处输入图片说明

总和表:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM