我想使用 google 应用程序脚本在新的 google sheet 中对不同 sheets(位于不同的 spreadsheets)中存在的值求和
I want to sum the values present in different sheets(located in different spreadsheets) in a new google sheet using google app script
我想使用 google 在新的 google sheet 中添加存在于不同 sheet 中的值(位于不同的分布 sheet 中)应用程序脚本。我对此很陌生,不知道如何进行。如果有人能帮助我,我将不胜感激。
最简单的方法是通过 ID 或名称访问不同的传播sheet,通过名称访问各自的 sheet,选择 ranges from which you want to copy and in which you want to paste and set the values. Note that to use the setValues() 方法需要您的来源range 和 destination range 具有相同的维度。有关详细信息,请参阅 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());
}
如果您想对不同 sheet 中单元格的值求和并将结果粘贴到目标 sheet 的相应单元格中 - 您可以这样做:
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 和工作表名称添加到数据 Sheet,然后这些工作表中的所有数据都会显示在比较 Sheet 中。
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);
}
}
}
这是我的数据格式Sheet:
这是我的比较 Sheet 在 运行 与列出的其他两个电子表格之后的样子:
从其他电子表格添加数据
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")
}
数据Sheet:
总和 Sheet:
我想使用 google 在新的 google sheet 中添加存在于不同 sheet 中的值(位于不同的分布 sheet 中)应用程序脚本。我对此很陌生,不知道如何进行。如果有人能帮助我,我将不胜感激。
最简单的方法是通过 ID 或名称访问不同的传播sheet,通过名称访问各自的 sheet,选择 ranges from which you want to copy and in which you want to paste and set the values. Note that to use the setValues() 方法需要您的来源range 和 destination range 具有相同的维度。有关详细信息,请参阅 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());
}
如果您想对不同 sheet 中单元格的值求和并将结果粘贴到目标 sheet 的相应单元格中 - 您可以这样做:
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 和工作表名称添加到数据 Sheet,然后这些工作表中的所有数据都会显示在比较 Sheet 中。
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);
}
}
}
这是我的数据格式Sheet:
这是我的比较 Sheet 在 运行 与列出的其他两个电子表格之后的样子:
从其他电子表格添加数据
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")
}
数据Sheet:
总和 Sheet: