我一直在尝试找到可以复制用于目的的脚本(对我的工作表进行了一些修改),但是没有什么能完全满足我的需要,而且我没有编码技能可以从头开始编写它。
我有一个包含多个工作表的Google电子表格,我们将不断添加新工作表,每发布一个新产品一个。每个工作表(包括从模板创建的新工作表)都具有该产品启动准备状态的“概览”摘要。它始终位于每张纸上的M3:M10。
我有一个状态摘要表,我想从每个表中粘贴在M3:M10中找到的信息。这将使我们能够在状态摘要中快速查看每种产品在发布前的运行情况,而无需我们检查每个特定工作表的标签。
这是我理想的情况:
我不需要包含的床单名称。
有人能为我写这个吗?我正在尝试教自己如何编写这些脚本,因此,对每个部分的作用进行一些“ //”解释将大有帮助。感谢您的光临!
尝试这个:
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]; }); });
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句