例文を使って繰り返し業務を時短

【GAS】スプシ内の特定シートのみ名前をつけて保存する

【GAS】スプシ内の特定シートのみ名前をつけて保存する GAS

特定シートのみ別名をつけて保存する

アクティブなスプレッドシートを指定の名前、日付、時刻のシート名で別のスプレッドシートとして保存する方法です。フォルダ内に保存されます。

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〇〇
  • アクティブなスプレッドシートを取得して、copy()メソッドを使用して、指定した名前でスプレッドシートをコピーします。
  • 最後に、指定したフォルダにファイルを移動します。DriveAppgetFolderById()メソッドを使用して、フォルダを取得し、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);
}

解説

  1. 保存するシートの名前を sheetToSave で指定します。
  2. SpreadsheetApp.getActiveSpreadsheet() メソッドで、現在開いているスプレッドシートを取得します。
  3. getSheetByName() メソッドを使って、 sheetToSave で指定された名前のシートを取得します。
  4. ファイル名を作成します。ここでは、シート名と日時を組み合わせたファイル名を作成しています。
  5. 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);
}

コメント

タイトルとURLをコピーしました