LoginSignup
1
2

More than 5 years have passed since last update.

Google Apps Scriptを使用してみた

Posted at

なぜか先輩に頼まれて、google apps scriptを書くことに。
概要としては、シート1のC列に入れたデータをシート2の該当dateをシート1のdateと照合し、
該当箇所にデータを入力するもの。
例:シート1のdateが1/9/2017ならその日の列にデータが入る。
さらに、
1.ちがう名前のときは新規で最下行にデータが、
同じ名前のもので違う日付の場合は、該当列にデータを入力します。

以下コードを全コピーして動きます。
添付写真の通りに、シート1のC列にデータをシート2のA列に日付を入れ実行ボタンをクリックすれば動きます。
※事前にボタンの作成方法は調べる必要あり。Sheet1.PNG
Sheet2.PNG

=============================
ここからコード↓

function myFunction() {

var Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var Sheet1 = Spreadsheet.getSheetByName("Sheet1");
var Sheet2 = Spreadsheet.getSheetByName("Sheet2");
var frsttime = 1;//true
//Browser.msgBox(frsttime);
var C11 = Sheet1.getRange("C11").getValue(); //date
var C12 = Sheet1.getRange("C12").getValue(); // place
var C13 = Sheet1.getRange("C13").getValue(); //tanbo
var C14 = Sheet1.getRange("C14").getValue(); // amount
//Browser.msgBox(C11);
//Browser.msgBox(C12);
//Browser.msgBox(C13);
//Browser.msgBox(C14);

 var last_row = Sheet2.getLastRow();
var last_column = Sheet2.getLastColumn();

var C15 = Sheet2.getRange(1,1).getValue();
   //Browser.msgBox(C15);
/*
document.write("③");
複数行ある場合は
このようにします。
*/
//最終行取得
 for(var i = last_row; i >= 1; i--){

if(Sheet2.getRange(i, 1).getValue() != ''){
   last_row = i;
// Browser.msgBox(last_row);
   break;
  }
 }
//最終列取得

 for(var l = last_column; l >= 1; l--){

if(Sheet2.getRange(1, l).getValue() != ''){
last_column = l;
   //Browser.msgBox(last_column);
   break;
  }
 }

//ここから作成していく======================================
//日付確認
for(var i = 3; i < last_column + 1; i++) { // http://www.ituore.com/entry/javascript-for
date = Sheet2.getRange(1,i).getValue();
//Browser.msgBox(date);
if( C11 == date ) {
// Browser.msgBox("passed");

  for(var l = 2; l < last_row + 1; l++) { // http://www.ituore.com/entry/javascript-for
        plc = Sheet2.getRange(l,1).getValue(); 
    sub_plc = Sheet2.getRange(l,2).getValue(); 

    if( plc == C12 && sub_plc == C13) { //既存データの場合の日付入力
       Sheet2.getRange(l,i).setValue(C14);
       frsttime = false;
       //Browser.msgBox("passedNo2");
     }

     last_Date = l;
    if (last_row == last_Date){
       //Browser.msgBox("passedNo4");
      if(frsttime != false){
        //Browser.msgBox("passedNo5");

        if( plc != C12 || sub_plc != C13){ 
        //Browser.msgBox("No6");
       Sheet2.getRange(last_row +1,1).setValue(C12);
       Sheet2.getRange(last_row +1,2).setValue(C13);
       Sheet2.getRange(last_row +1,i).setValue(C14);
       frsttime = false;
        }
    }
    }
    }
  }

  }

//データ消去
Sheet1.getRange('C11:C14').clear();

Browser.msgBox("完了");

}

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2