簡體   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