見出し画像

【勉強する】GAS開発するよ~!!【練習問題16-18】

Excel神髄さんのサイトに掲載されているVBA練習問題をGASで解いてみました🙆‍♀️頭の体操になるので是非参考にしてください~!

◎動画はこちら

◎練習問題16

function sample16() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName("練習16_マスタ");
 var rows = sheet.getLastRow()-1;
 var datas = sheet.getRange(2,1,rows,3).getValues();
 
 var products = {};
 var prices = {};
 
 for(var i=0; i<datas.length; i++){
   var key = datas[i][0];
   var value = datas[i][1];
   products[key] = value;
 }
 
 for(var i=0; i<datas.length; i++){
   var key = datas[i][0];
   var value = datas[i][2];
   prices[key] = value;
 }
 
 var outputSheet = ss.getSheetByName("練習16");
 var outputRows = outputSheet.getLastRow()-2;
 var outputColumns = outputSheet.getLastColumn();
 var outputDatas = outputSheet.getRange(2,1,outputRows,outputColumns).getValues();
 
 var sum = 0;
 var values = [];
 
 outputDatas.forEach(function(data){
 
   var num = data[1];
   var product = products[num];
   var price = prices[num];
   var count = data[4];
   
   if(product == null){
     var total = 0;
   } else {
     var total = price * count;
   }
   
   sum = sum + total;
   values.push([product,price,count,total]);
   
 });
 
 outputSheet.getRange(2,3,values.length,4).setValues(values);
 outputSheet.getRange(12,6).setValue(sum);
 
}

◎練習問題17

function sample17() {

 var folder = DriveApp.getFolderById("★フォルダIDを記載");
 var files = folder.getFiles();
 
 var values = [];
 
 while(files.hasNext()){
 
   var file = files.next();
   var name = file.getName();
   var id = file.getId();
   
   var ss = SpreadsheetApp.openById(id);
   var sheets = ss.getSheets();
   
   sheets.forEach(function(sheet,ind){
     var sheetName = sheet.getName();
     if(ind == 0){
       values.push([name,sheetName]);
     } else {
       values.push(["",sheetName]);
     }
   });
   
 }
 
 var outputSS = SpreadsheetApp.getActiveSpreadsheet();
 var outputSheet = outputSS.getSheetByName("練習17");
 var range = outputSheet.getRange(2,1,values.length,2);
 
 range.setValues(values);
 range.setBorder(true,true,true,true,true,true,"#000000",SpreadsheetApp.BorderStyle.SOLID);
 
}

◎練習問題18

function sample18() {

 var folder = DriveApp.getFolderById("★フォルダIDを記載");
 var files = folder.getFiles();
 
 var values = [];
 
 var outputSS = SpreadsheetApp.getActiveSpreadsheet();
 var outputSheet = outputSS.getSheetByName("練習18");
 
 while(files.hasNext()){
 
   var file = files.next();
   var name = file.getName();
   var id = file.getId();
   
   var ss = SpreadsheetApp.openById(id);
   var sheets = ss.getSheets();
   
   sheets.forEach(function(sheet,ind){
     var sheetName = sheet.getName();
     if(ind == 0){
       values.push([name,sheetName]);
     } else {
       values[0].push(sheetName)
     }
   });

   var lastRow = outputSheet.getLastRow()+1;
   var range = outputSheet.getRange(lastRow,1,values.length,values[0].length);
   
   range.setValues(values);
   range.setBorder(true,true,true,true,true,true,"#000000",SpreadsheetApp.BorderStyle.SOLID)
   
   values = [];
 }
 
 var rows = outputSheet.getLastRow()-1;
 var columns = outputSheet.getLastColumn();
 outputSheet.getRange(2,1,rows,columns).setBorder(true,true,true,true,true,true,"#000000",SpreadsheetApp.BorderStyle.SOLID);
 
}

GASの基礎学習にはUdemyがおすすめです!(徹底解説してます!)





この記事が気に入ったらサポートをしてみませんか?