前提
GAS(GoogleAppsScript)に関する質問です。
単純に指定日スケジュールをシートへ落とし込むところまでは実現している。
シート2に日報テンプレートを作成し参照して運用している。
実現したいこと
用意したテンプレートへ直接落とし込みたい。
添付画像のようなテンプレートの為、取得データを1行おきに出力実行したい。
1.指定セルに日付を入力するだけで実行したい(下記1枚目画像赤枠)
→追記:vardateからgetRange(指定セル).getValueで解決。
2.抽出前に抽出先セル内データをクリアしたい(下記1枚目画像黒枠)
→追記:clearContentでいけそう?
3.指定セルにデータを抽出したい。(下記2枚目画像が完成理想)
→追記※テンプレートが1行おきの為どのような出力命令をすれば良いか困っている。
i=i+2??
appendRowは使えない?
発生している問題
1.現在の状態だと、データを抽出するためにわざわざスクリプトエディタを開き、日付を修正してプログラムを起動する。
2.その日のデータだけがほしいので、シートに前日のデータが入っていたら手動で削除する。
3.データが羅列されるだけなので、テンプレートの中の指定セルに入れ込んでいきたい。
該当のソースコード
/* 指定月のカレンダーからイベントを取得する */ function getCalendar() { var mySheet=SpreadsheetApp.getActiveSheet();//.getSheetByName('gcal'); //シートを取得 var no=1; //mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得 var myCal=CalendarApp.getCalendarById('xxx@xxx.jp'); //特定のIDのカレンダーを取得 var date='2019/09/20 00:00:00'; //対象日を指定 var startDate=new Date(date); //取得開始日 var endDate=new Date(date); endDate.setDate(endDate.getDate()+1); //取得終了日 var myEvents=myCal.getEvents(startDate,endDate); //カレンダーのイベントを取得 //mySheet.getRange(1, 1, 10, 10).clearContent(); /* イベントの数だけ繰り返してシートに記録 */ for each(var evt in myEvents){ Logger.log(evt.getLocation()); Logger.log(evt.getDescription()); mySheet.appendRow( [ no, //No evt.getTitle(), //イベントタイトル evt.getStartTime(), //イベントの開始時刻 evt.getEndTime(), //イベントの終了時刻 evt.getLocation(), //場所 evt.getDescription(), //説明 "=INDIRECT(\"RC[-3]\",FALSE)-INDIRECT(\"RC[-4]\",FALSE)" //所要時間を計算 ] ); no++; } }
スクリプトについてはネットからの見様見真似です。
かなりネットで調べたつもりですが、X行おきに出力する方法がわかりませんでした。
10のイベントがあったら10すべて取得し、出力する際X行おきにすべて出力できれば実現できそうです。
どなたかご教示いただけると幸いです。
どうぞ宜しくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/01 13:57