特定シートのみ別名をつけて保存する
アクティブなスプレッドシートを指定の名前、日付、時刻のシート名で別のスプレッドシートとして保存する方法です。フォルダ内に保存されます。
function saveActiveSpreadsheet() {
// スプレッドシート名を作成する
var date = new Date();
var fileName = "My Spreadsheet " + Utilities.formatDate(date, "JST", "yyyyMMdd HHmmss");
// 保存先のフォルダを指定する(IDを入力する)
var folderId = "<folder-id>";
// アクティブなスプレッドシートを取得する
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// スプレッドシートをコピーする
var copiedSpreadsheet = activeSpreadsheet.copy(fileName);
// ファイルを指定したフォルダに移動する
var folder = DriveApp.getFolderById(folderId);
folder.addFile(copiedSpreadsheet);
DriveApp.getRootFolder().removeFile(copiedSpreadsheet);
}
解説
- まず、スプレッドシート名を作成するために、現在の日付を取得して、その日付をフォーマットします。
Utilities.formatDate()
メソッドを使用して、日本標準時(JST)の形式で、年月日と時分秒を取得します。これらを指定の形式で連結して、ファイル名を作成します。 - 次に、フォルダのIDを指定します。ここでは、
<folder-id>
の部分に実際のフォルダのIDを入力します。- フォルダIDの確認方法→URLから確認する
https://drive.google.com/drive/u/0/folders/〇〇フォルダID〇〇
- フォルダIDの確認方法→URLから確認する
- アクティブなスプレッドシートを取得して、
copy()
メソッドを使用して、指定した名前でスプレッドシートをコピーします。 - 最後に、指定したフォルダにファイルを移動します。
DriveApp
のgetFolderById()
メソッドを使用して、フォルダを取得し、addFile()
メソッドを使用して、スプレッドシートをフォルダに追加します。そして、getRootFolder().removeFile()
メソッドを使用して、元のフォルダからスプレッドシートを削除します。
別のスクリプト
function saveSheet() {
var sheetToSave = "Sheet1"; //保存するシートの名前を指定
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetToSave);
var date = new Date();
var fileName = sheetToSave + "_" + date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + "_" + date.getHours() + "-" + date.getMinutes() + "-" + date.getSeconds();
//ファイル名を指定。ここでは、シート名と日時を組み合わせたファイル名になっています。
var blob = sheet.getBlob().setName(fileName);
DriveApp.createFile(blob);
}
解説
- 保存するシートの名前を
sheetToSave
で指定します。 SpreadsheetApp.getActiveSpreadsheet()
メソッドで、現在開いているスプレッドシートを取得します。getSheetByName()
メソッドを使って、sheetToSave
で指定された名前のシートを取得します。- ファイル名を作成します。ここでは、シート名と日時を組み合わせたファイル名を作成しています。
getBlob()
メソッドを使って、シートのデータをバイナリ形式で取得します
別スクリプト2
function saveActiveSpreadsheet() {
// 新規にシートを作成して値を格納
const spread = SpreadsheetApp.create('あたらしいスプシ');
const sheet = spread.getActiveSheet();
const values = [['title', 'author'],['sample','t_o_d']]
sheet.getRange(1,1,values.length, values[0].length).setValues(values);
// 作成シート情報
const spreadId = spread.getId();
const file = DriveApp.getFileById(spreadId);
// コピー先のフォルダ情報
const folderId = '1C9VHfqYh2mmzIGHQvQPXfavi_6f1qLHJ'
const folder = DriveApp.getFolderById(folderId);
// 変更の適用
SpreadsheetApp.flush();
// 指定フォルダへコピー実行
const fileName = 'コピーファイル名'
file.makeCopy(fileName, folder);
}
別スクリプト3
function sheetCopyAnotherFile() {
//スクリプトに紐付いたアクティブなシートをコピー対象のシートとして読み込む
let copySheet = SpreadsheetApp.getActiveSheet();
//シートのコピー先のスプレッドシートを読み込む
let destSpreadsheet = SpreadsheetApp.openById("シートID");
//コピー対象シートを同一のスプレッドシートにコピー
let newCopySheet = copySheet.copyTo(destSpreadsheet);
//コピーしたシート名を変更する
newCopySheet.setName("トマト")
}
別スクリプト4
// シートの自動作成スクリプト
function createSheet() {
// テンプレートファイル
var templateFile = DriveApp.getFileById('ファイルID');
// 出力フォルダ
var OutputFolder = DriveApp.getFolderById('フォルダID');
// 出力ファイル名
var OutputFileName = templateFile.getName().replace('_template', '')+'_'+Utilities.formatDate(new Date(), 'JST', "yyyyMMdd HHmmss")
templateFile.makeCopy(OutputFileName, OutputFolder);
}
別スクリプト5
function saveAllSheets() {
// 新しいスプレッドシートを作成して、シートの内容を書き込む
const spread = SpreadsheetApp.create('あたらしいスプシ');
const sheets = spread.getSheets();
for (let i = 0; i < sheets.length; i++) {
const sheet = sheets[i];
const values = sheet.getDataRange().getValues();
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}
// 作成シート情報
const spreadId = spread.getId();
const file = DriveApp.getFileById(spreadId);
// コピー先のフォルダ情報
const folderId = '1C9VHfqYh2mmzIGHQvQPXfavi_6f1qLHJ';
const folder = DriveApp.getFolderById(folderId);
// 変更の適用
SpreadsheetApp.flush();
}
別スクリプト6
// First itemをクリックした時の処理
function menuItem1() {
//現在のスプレットシートを取得する
var sheet1 = SpreadsheetApp.getActiveSheet();
//コピーするスプレットシートのid(今回の場合は請求書のテンプレ)
var templateid = "1C9VHfqYh2mmzIGHQvQPXfavi_6f1qLHJ";
var template = DriveApp.getFileById(templateid);
//保存先フォルダのオブジェクトを取得
var destfolderid = "1C9VHfqYh2mmzIGHQvQPXfavi_6f1qLHJ";
var destfolder = DriveApp.getFolderById(destfolderid);
//見積書からデータを取得
var name1 = sheet1.getRange(2, 2).getValue();
var name2 = sheet1.getRange(3, 2).getValue();
var filename = '請求書(' + name1 + ')';
//このsheetが指定フォルダにコピー作成された請求書のテンプレ
var sheet = template.makeCopy(filename, destfolder);
//指定フォルダにコピー作成された請求書のテンプレを取得
var copiedSheet = SpreadsheetApp.open(sheet);
var sheets = copiedSheet.getSheets();
//取得したスプレッドシートから、1つ目のシートを取得(デフォルトでは'シート1')
var invoice = sheets[0];
//データを転記
//コピー先のシートの中のセルを指定して、コピー実行
invoice.getRange(2, 2).setValue(name1);
invoice.getRange(3, 3).setValue(name2);
}
コメント