Google apps script コード保管 コピーセル シート作成
Google apps script コード保管 セルをコピーして新規シートにペーストするスクリプト
「四季報2024年春号3月18日」スプレッドシート
用途機能
IR調査というシート名から「GAS追加シート」というシートを新規で作成。H列に記入があるときにその行を取得。スクリプトで、IR調査シートからGAS追加シートを作成して、7番目のコメント(見出しとして「IR調査、自己コメント」)に記載をしたセルの行をコピーして、GAS追加シートにペーストしてる。
制限注意とか
「GAS追加シート」は存在しないときは新規で作成される。存在したときは、スクリプト実行時に最初にセルが全消去されたのち、新しい内容が記載される。なので、コメントとか修正したりしたら別名シートにしておくとよい。
以下スクリプト
//カラー https://developers.google.com/apps-script/reference/calendar/color?hl=ja
//オレンジ(#BE6D00)
//追加挿入したシートに名前を設定
function addSheet() {
//https://auto-worker.com/blog/?p=3209#
//コンテナバインド型で紐付いたスプレッドシートを読み込む
let mySheet = SpreadsheetApp.getActiveSpreadsheet();
let varName="GAS追加シート"
const isSheetExist = mySheet.getSheetByName(varName)
if (isSheetExist) {
// シートがある場合の処理
}else{
// シートがない場合の処理
//スプレッドシートに新しいシートを追加挿入
let newSheet = mySheet.insertSheet();
//newSheet.moveActiveSheet(1);//1番目に移動
//追加挿入したシートに名前を設定
newSheet.setName(varName);
Logger.log("new sheet");
}
}
//シートを削除
function deleteSheet(sheetName) {
const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
let varName="GAS追加シート"
const isSheetExist = testSpreadSheet.getSheetByName(varName)
if (isSheetExist) {
// シートがある場合の処理
testSpreadSheet.deleteSheet(testSpreadSheet.getSheetByName(varName)); //シートを削除
Logger.log("delete");
}else{
// シートがない場合の処理
}
}
function getIRCellSecond(){
//バージョンアップ、Ver2.0 getIRCell()から改造
//2024/03/28
/*
現在のシート、新しいシートを作成しておいて、ループで都度コピー・ペースト処理を入れたほうが
楽かもしれない。
*/
//Hセルに記入された行だけをコピーしたい、2024/03/27
let ss = SpreadsheetApp.getActive(); // このスプレッドシートファイルの
let mainName="IR調査";
//シート名を指定して
let sheet = ss.getSheetByName(mainName);//let sheet = ss.getActiveSheet(); // このシートに
let values = sheet.getDataRange().getValues(); // 記入されている値を読み込む
//let rangeByRowColumnNumRows=[]; //セルと取得する行数を指定する
//ここに新しいシート作成を入れる
//new sheet
//addSheet();
//コンテナバインド型で紐付いたスプレッドシートを読み込む
let newSheet = SpreadsheetApp.getActiveSpreadsheet();
let varName = "GAS追加シート";
let isSheetExist = newSheet.getSheetByName(varName);
if (isSheetExist) {
// シートがある場合の処理
Logger.log("almost sheet exist");
isSheetExist.clear();//cell clear.
}else{
// シートがない場合の処理
//スプレッドシートに新しいシートを追加挿入
const newMakeSheet = newSheet.insertSheet();
//ERROR not function. let pasteSheet = newMakeSheet.getActiveSheet(); // このシートに
//newSheet.moveActiveSheet(1);//1番目に移動
//追加挿入したシートに名前を設定
newMakeSheet.setName(varName);
Logger.log("new sheet");
}
//年のためにもう一度、varNameのシートを取得する。
isSheetExist = newSheet.getSheetByName(varName);
//行でループして、列をループする
let colCount=0;
for(let i=0;i<values.length;i++){
//Logger.log(values[i][1]);//2列目が取得できる
//H列は7番目(0から数える)、期待度(◯、バツ)は9番目
if (values[i][7]!="")
{//H列に記入があるときにその行を取得した
//Logger.log(values[i][7]);//H列
//セルと取得する行数を指定する方法
//必要な分を余計なものも含めて取得しておく。これは配列になっているから後で必要な分を取得
//rangeByRowColumnNumRows.push(sheet.getRange(i+1, 1, 1,10)); //(行番目,列番目から, 1行分, 10列分)
colCount++;//Start 1 to ++
//getRange()のセルに、setValueでvalues[][]の値(IR調査シートから取得した値)を設定する
isSheetExist.getRange(colCount,1).setValue(values[i][0]);//code
isSheetExist.getRange(colCount,1).setVerticalAlignment("top");
isSheetExist.getRange(colCount,1).setHorizontalAlignment("center");
isSheetExist.getRange(colCount,1).setBorder(true, true, true, true, false, false);
isSheetExist.setColumnWidth(1,46);
if(values[i][0]=="コード"){
isSheetExist.getRange(colCount,1).setBackground("#a9a9a9");//gray
isSheetExist.getRange(colCount,1).setFontWeight("bold");
}
isSheetExist.getRange(colCount,2).setValue(values[i][1]);//name
isSheetExist.getRange(colCount,2).setVerticalAlignment("top");
isSheetExist.getRange(colCount,2).setBorder(true, true, true, true, false, false);
if(values[i][1]=="企業名"){
isSheetExist.getRange(colCount,2).setBackground("#a9a9a9");//gray
isSheetExist.getRange(colCount,2).setHorizontalAlignment("center");
isSheetExist.getRange(colCount,2).setFontWeight("bold");
}
isSheetExist.getRange(colCount,3).setValue(values[i][2]);//naiyo
isSheetExist.getRange(colCount,3).setWrap(true);
isSheetExist.getRange(colCount,3).setVerticalAlignment("top");
isSheetExist.setColumnWidth(3,180);
isSheetExist.getRange(colCount,3).setBorder(true, true, true, true, false, false);
if(values[i][2]=="概要"){
isSheetExist.getRange(colCount,3).setBackground("#a9a9a9");//gray
isSheetExist.getRange(colCount,3).setHorizontalAlignment("center");
isSheetExist.getRange(colCount,3).setFontWeight("bold");
}
isSheetExist.getRange(colCount,4).setValue(values[i][7]);//comment
isSheetExist.getRange(colCount,4).setWrap(true);
isSheetExist.getRange(colCount,4).setVerticalAlignment("top");
isSheetExist.setColumnWidth(4,320);
isSheetExist.getRange(colCount,4).setBorder(true, true, true, true, false, false);
if(values[i][7]=="IR調査、自己コメント"){
isSheetExist.getRange(colCount,4).setBackground("#a9a9a9");//gray
isSheetExist.getRange(colCount,4).setHorizontalAlignment("center");
isSheetExist.getRange(colCount,4).setFontWeight("bold");
}
isSheetExist.getRange(colCount,5).setValue(values[i][9]);//期待度
isSheetExist.getRange(colCount,5).setVerticalAlignment("middle");
isSheetExist.getRange(colCount,5).setHorizontalAlignment("center");
isSheetExist.getRange(colCount,5).setBorder(true, true, true, true, false, false);
isSheetExist.setColumnWidth(5,60);
if(values[i][9]=="◯"){
isSheetExist.getRange(colCount,5).setBackground("#fffacd");//akarui daidai
}else if(values[i][9]=="バツ"){
isSheetExist.getRange(colCount,5).setBackground("#a9a9a9");//gray
}
if(values[i][9]=="期待度"){
isSheetExist.getRange(colCount,5).setBackground("#a9a9a9");//gray
isSheetExist.getRange(colCount,5).setFontWeight("bold");
}
//オレンジ(#BE6D00)
/**
var range=sheet.getRange("A1:B1");
var color="#FFFF00";
range.setBackground(color);
const testRange = testSheet.getRange("B2:C3");
testRange.setWrap(false);
*/
//配列にAddする push,Appendする。
//例:[[1885.0, 東亜建設工業, 旧浅野系の海上土木大手。陸上土木や民間建築も。海外ODAで積極展開。, 10.3, 1.09, 4975.0, 0.0302, 2024年3月期業績見通し営業利益・経常利益は過去最高となる見込み,、海外事業において大型工事の利益率が改善したことにより上方修正。1株を4株に分割する株式分割を実施]]
//
}//if end
}//for end
///ENDD
Logger.log("END ...");
}