我想使用Google App脚本在新的Google工作表中添加存在于不同工作表(位于不同电子表格中)中的值。我对此并不陌生,不知道如何进行。如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
最简单的方法是按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);
}
}
}
答案 1 :(得分:0)
您需要在数据表中添加自己的电子表格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")
}
数据表:
摘要表: