我一直在尝试找到可以复制用于目的的脚本(对我的工作表进行了一些修改),但是我没有做任何需要的工作,而且我没有编写代码的技能从头开始。
我有一个Google电子表格,其中包含多个工作表,我们将不断添加新工作表,其中每个发布的新产品一个。每个工作表(包括从模板创建的新工作表)都具有该产品启动准备状态的“概览”摘要。始终位于每张纸上的M3:M10。
我有一个状态摘要表,我想从每个表中粘贴在M3:M10处找到的信息。这样一来,我们就可以在状态摘要中快速查看每个产品在发布前的运行情况,而无需我们检查每个特定工作表的标签。
这是我理想的情况:
我不需要随附的工作表名称。
有人能为我写这个吗?我正在尝试教自己如何编写这些脚本,因此,对每个部分的作用进行一些“ //”解释将大有帮助。谢谢您的光临!
答案 0 :(得分:0)
尝试一下:
function atAGlance() {
var ss=SpreadsheetApp.getActive();
var excl=['Status Summary'];
var sh=ss.getSheetByName('Status Summary');
var shts=ss.getSheets();
var n=1;
for(var i=0;i<shts.length;i++) {
if(excl.indexOf(shts[i].getName())==-1){
var v1=shts[i].getRange("M3:M10").getValues();
var v2=transpose(v1);
sh.getRange(1 + n++,1,v2.length,v2[0].length).setValues(v2);
}
}
}
//https://stackoverflow.com/a/16705104/7215091
function transpose(a)
{
return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
从[https://stackoverflow.com/a/16705104/7215091]获得移调 (https://stackoverflow.com/a/16705104/7215091)
此版本允许您从流程中排除工作表,并且可以如下所示在testAtAGlance()函数中运行它。我使用的示例排除了“状态摘要”和“全局”。
function testAtAGlance() {
atAGlance(['Status Summary','Globals']);
}
function atAGlance(excl) {
var excl=excl || ['Status Summary'];
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Status Summary');
var shts=ss.getSheets();
var n=1;
for(var i=0;i<shts.length;i++) {
if(excl.indexOf(shts[i].getName())==-1){
var v1=shts[i].getRange("M3:M10").getValues();
var v2=transpose(v1);
sh.getRange(1 + n++,1,v2.length,v2[0].length).setValues(v2);
}
}
}
//https://stackoverflow.com/a/16705104/7215091
function transpose(a)
{
return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}