簡體   English   中英

當我運行我的腳本以從其他 2 張紙中獲取數據時,它的排列方式如圖所示

[英]when i run my script to fetch data from other 2 sheets it is arranged the shown in picture of master sheet

主表

這是我的代碼,名稱顯示在名稱下,數字顯示在數字下,但它顯示在名稱下..我有 2 張名為 {name,number} 的工作表,主工作表包含 id,name 編號。 當我運行腳本時,它會獲取數據,但不會相應地

function addMenu()
{
 var menu = SpreadsheetApp.getUi().createMenu('Merge');
 menu.addItem('Run Script', 'MergeSheets');
 menu.addToUi();
}

function onOpen()
{
 addMenu(); 
}
//combine data from multiple sheets
function MergeSheets() {
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var data = null;
  var RetrieveSheet = null;
  var PasteSheet = ss.getSheetByName("Master");
  var sheets = ['Name','Number'];
  PasteSheet.getRange(2,1,PasteSheet.getLastRow(),PasteSheet.getLastColumn()).clear();
  
  for (var i =0; i<sheets.length; i++){
    RetrieveSheet = ss.getSheetByName(sheets[i]);
    if (RetrieveSheet.getName() != 'Master'){
      data = RetrieveSheet.getRange(2,1,RetrieveSheet.getLastRow(),RetrieveSheet.getLastColumn()); 
      data.copyTo(PasteSheet.getRange(parseInt(PasteSheet.getLastRow())+1,1));
    }
  }
}
//update data changes to each sheets
function updateBasedSheet()
 {
  var master = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Master');
  var valueMaster = master.getRange(2, 1, master.getLastRow(), master.getLastColumn()).getValues();
  var Name = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Name');
  var Number = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Number');
  var dataName = valueMaster.filter( function(item){
  return item[2] === 'Name';
 }
 
 );

  var Number = valueMaster.filter( function(item){
    return item[2] === 'Number';
  });

  Name.getRange(1, 3, dataName.length, dataName[0].length).setValues(dataName);
  Number.getRange(1, 3, dataNumber.length, dataNumber[0].length).setValues(dataNumber);
}

如果您只是想加入 2 張紙,並且它們具有相同的長度和 id 對應,您可以使用

var data1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Name').slice(1);
var data2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Number').slice(1);

var mergedData = data1.map( (index, row) => row.concat(data2[index]) );

SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Master')
  .getRange(2, 1, mergedData.length, mergedData[0].length)
  .setValues(mergedData);

暫無
暫無

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

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