#作りたいもの
友人と3人で集まれる日付を考えたい時にスプレッドシートを使って日程調整をするコードをGASで簡単に作りたい
##GoogleAppsScript(GAS)
Google Apps ScriptとはGoogleが提供しているプログラミング環境、GAS(ガス)という略称あり
Googleのアカウントを持っていれば、利用する事ができるので、Webからファイルをダウンロードするといった事は行う必要がない
ブラウザに依存しない
GASについてはこちらにわかりやすくまとめてあり、使用制限などもあるので一度目を通しておくと良い
##システム概要
スプレッドシートに3人ともが○をつけた日付を取得するコードをGASで書いてシステムログに出力する
##スプレッドシートで用いる関数
IF関数とAND関数を用います
=IF(and(B3="○",C3="○",D3="○"),"○","×")
のようにすると3人が共通で○としている場合は○、1人でも○がなければ×をスプレッドシートに入力する
##GASのコード
こちらを参考にスプレッドシートとGASの紐付けを行う
function schedule() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();//GASとスプレッドシートファイルの紐付け
var sheet = spreadsheet.getSheetByName('日程調整');//シート名を指名してアクセス
//シートの最終行番号、最終列番号を取得
var startrow = 1;
var startcol = 1;
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var sheetdata = sheet.getSheetValues(startrow, startcol, lastrow, lastcol);
for(var i=2;i<lastrow;i++){
if(sheetdata[i][4]=="○"){
var date=new Date(sheetdata[i][0]);//new Date()で日付データの生成
Logger.log(date);
}
}
}
こちらのコードでスプレッドシートを以下のようにして実行します。
見にくいのでフォーマットを変更するコードを18行目に加えて完成
function schedule() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();//GASとスプレッドシートファイルの紐付け
var sheet = spreadsheet.getSheetByName('日程調整');//シート名を指名してアクセス
//シートの最終行番号、最終列番号を取得
var startrow = 1;
var startcol = 1;
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var sheetdata = sheet.getSheetValues(startrow, startcol, lastrow, lastcol);
for(var i=2;i<lastrow;i++){
if(sheetdata[i][4]=="○"){
var date=new Date(sheetdata[i][0]);//new Date()で日付データの生成
var date = Utilities.formatDate(date, "JST","MM'/'dd")//これを追加
Logger.log(date);
}
}
}
いい感じですかね
出力となる日付をまたスプレッドシートに入力するとかlineやスラックで飛ばすとか、日付を取り出すときの条件とかいろいろいじれるので応用が利くし目で追うより作業効率を挙げられそう