こんにちは、nishi_talk(@nishi_talk)です。
今回はGoogle Apps Scriptを使用して、スプレッドシートのコピーを作成する方法をご紹介します。
毎月同じテンプレートのシートをGoogle Apps Scriptを使用してシート名を「YYYY年MM月」みたいな感じで毎月作成できるようにします。
/** * スプレッドシートのコピー作成 */ function AutoSheetCopy(){ // スプレッドシートを取得 var sheet = SpreadsheetApp.getActiveSpreadsheet(); // コピー元のシートを取得(今回は template というシート) var templateSheet = sheet.getSheetByName('template'); // シートをコピー sheet.insertSheet(getmonth(), 0, {template: templateSheet}); } // 現在の月と週数を取得する関数 function getmonth(){ // 現在の日時を取得 var today = new Date(); // 現在の日時から、月を算出 var out = today.getYear() + "年"; out += (today.getMonth()) + "月"; return out; // yyyy年mm月の文字列を返す }
まずはテンプレートのシートを作成。シート名を「template」に変更します。
上記のコードを説明します。
シート名が「yyyy年mm月」になるように現在の日時を取得してシート名を設定します。
// 現在の月と週数を取得する関数 function getmonth(){ // 現在の日時を取得 var today = new Date(); // 現在の日時から、月を算出 var out = today.getYear() + "年"; out += (today.getMonth()) + "月"; return out; // yyyy年mm月の文字列を返す }
変数「out」にyyyy年mm月の文字列が設定されます。
次に、コピー元のシート(template)を取得します。
var templateSheet = sheet.getSheetByName('template');
関数getmonthで取得したyyyy年mm月の文字列をシート名にして、取得したコピー元のシートをコピーします。
sheet.insertSheet(getmonth(), 0, {template: templateSheet});
あとはトリガーの時間設定で、毎月1日に関数AutoSheetCopyが発火するように設定すればOK!
毎月決まったテンプレートのシートを自動的に作成する方法をご紹介しました。