【问题标题】:I want to sum the values present in different sheets(located in different spreadsheets) in a new google sheet using google app script我想使用谷歌应用脚​​本在一个新的谷歌工作表中对不同工作表(位于不同电子表格中)中的值求和
【发布时间】:2019-07-05 15:08:24
【问题描述】:

我想使用谷歌应用脚​​本在新的谷歌工作表中添加不同工作表(位于不同电子表格中)中的值。我是新手,不知道如何进行。如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 嗨,Ishan,您有尝试过的代码吗?如果是这样,请在此处分享,以便人们可以就此提供意见?

标签: javascript google-apps-script google-sheets google-sheets-api google-sheets-macros


【解决方案1】:

您需要将自己的电子表格 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")
}

数据表:

总表:

【讨论】:

  • 感谢您的回答!我想我不够清楚,我想要的是从 2 张表中添加值并在新表中显示总和。您对此有什么建议吗?
  • 我添加了第二个版本来解决这个问题。
【解决方案2】:

最简单的方法是通过它们的 ID 或名称访问不同的电子表格,按名称访问相应的工作表,选择要从中复制和粘贴并设置值的 ranges。请注意,要使用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);
    }
  } 
}

【讨论】:

  • 感谢您的回答!我想我不够清楚,我想要的是从 2 张表中添加值并在新表中显示总和。您对此有什么建议吗?
  • 你想求和吗?来自工作表 1 的单元格 A1 和工作表 2 的 A1 的值,并将结果分配给结果工作表中的单元格 A1?
猜你喜欢
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多