簡體   English   中英

用於將多個工作表中的陣列復制到單個“狀態摘要”表單上的Google Apps腳本

[英]Google Apps Script for copying an array from multiple sheets onto a single Status Summary sheet

我一直試圖找到一個我可以復制的腳本用於我的目的(對我的特定工作表進行了一些修改),但沒有什么是我需要它做的事情,我沒有編寫技巧從頭開始編寫。

我有一個包含多個工作表的Google電子表格,我們將不斷添加新工作表,我們推出的每個新產品都有一個。 每個工作表(包括從模板創建的新工作表)都具有該產品的啟動准備狀態的“概覽”摘要。 它始終位於每張紙上的M3:M10。

我有一個狀態摘要表,我想在每張表中粘貼M3:M10中的信息。 這將使我們能夠在發布之前快速查看每個產品的狀態摘要,而無需我們檢查每個特定工作表的選項卡。

這是我理想的情況:

  • 該腳本將遍歷工作簿中包含的每個工作表,但跳過名為“狀態摘要”的工作表。
  • 腳本將從每張表中的M3:M10中提取數據
  • 腳本將在“狀態摘要”中存儲M3:M10數據,在A2:H2(我的列標簽為A1:H1)中組織信息。 例如:表1中的M3數據將存儲在狀態摘要A2中,表1上的M3數據將存入B2狀態匯總等。
  • 腳本將自動為每個新工作表使用新行。 例如:工作表1上的M3數據將在狀態摘要中的A2中,工作表2上的M3數據將在狀態摘要中的A3中等。

我不需要包含的床單名稱。

有人能為我寫這個嗎? 我正在嘗試自學如何編寫這些腳本的代碼,因此對每個部分所做的一些“//”解釋將是一個巨大的幫助。 謝謝你的期待!

嘗試這個:

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]; }); });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM