0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASでGoogle Drive上のファイルをコピーする方法

Last updated at Posted at 2024-10-06

機能概要

このGoogle Apps Scriptの関数 createFilesFromTemplate() は、テンプレートファイル(xls)を複製し、各社員ごとの情報に基づいて個別のファイルをGoogleドライブ上の指定されたフォルダに作成するスクリプトです。
※ 例えば勤怠を入力するファイルがあったら、それにファイル名を付けて複製するだけの機能です。

主な機能:

※テンプレートファイル(xls)は事前に作成しておく必要があります。

  1. テンプレートファイルの取得:

    • Googleドライブ上のテンプレートファイル(Excelファイル)をコピー元として使用します。
    • テンプレートファイルのID(fileId)を指定してファイルを取得します。
  2. 社員ごとのファイル生成:

    • 社員情報(会社名、氏名、メールアドレス)をリストとして保持し、社員ごとに異なるファイル名を生成します。メアドは現在は使ってないですが、権限付与が必要になったら使う予定
    • 生成されるファイル名の形式は、会社名_氏名.xls です。
  3. ファイルの複製と保存:

    • テンプレートファイルを複製し、社員ごとのファイル名で指定されたフォルダに保存します。
    • スクリプトでは DriveApp を使用して、コピー先のフォルダ(destinationFolderId)を指定して保存します。

コピー元のファイルの修正

コピー元のファイルの中で日付とか直したい箇所があれば修正しておく。

gasでコード作成

何かスプレッドシート用意してgasを作ろう
拡張機能->apps script

function createFilesFromTemplate() {
  // テンプレートファイルのID(GoogleドライブのURLから取得可能)
  // https://docs.google.com/spreadsheets/d/1fX9yTm4bnpK8FBOREG_m6kz6cKd9mfl6/edit?gid=1381060538#gid=1381060538
  var fileId = '1fX9yTm4bnpK8FBOREG_m6kz6cKd9mfl6';  // コピー元のファイルID
  // コピー先のフォルダID(GoogleドライブのURLから取得可能)
  // https://drive.google.com/drive/folders/1TueBj-LtKvcUE-jNpwDGXGzqY8SY4lQ5
  var destinationFolderId = '1TueBj-LtKvcUE-jNpwDGXGzqY8SY4lQ5'; // コピー先のフォルダID
  
  // 社員情報のリスト(会社名, 氏名, email)
  var employees = [
    { companyName: '会社A', name: '山田太郎', email: 'taro.yamada@example.com' },
    { companyName: '会社B', name: '佐藤花子', email: 'hanako.sato@example.com' },
    { companyName: '会社C', name: '鈴木次郎', email: 'jiro.suzuki@example.com' },
    // ここに他の社員情報を追加
  ];

  // コピー先のフォルダを取得
  var destinationFolder = DriveApp.getFolderById(destinationFolderId);
  
  // 各社員ごとにファイルを作成
  employees.forEach(function(employee) {
    // ファイル名を生成
    var newFileName = employee.companyName + "_" + employee.name + ".xls";
    
    // テンプレートファイルをコピー
    var copiedFile = DriveApp.getFileById(fileId).makeCopy(newFileName, destinationFolder);
    
    // ログに結果を記録
    Logger.log('ファイル作成完了: ' + newFileName);
  });
}

実行

  • 社員情報employeesに変更があれば修正し、実行する。
  • 実行すると、destinationFolderIdに指定したグーグルドライブ上にファイルが作成されているはずです。

TODO

コピーする際にファイルの中を加工しようと思ったがハードルが高かった。
扱っているのがxlsだが、ブラウザで開くとスプレッドシートに変換されている。xlsで修正を加えることができなかった。修正するにはgoogle drive apiが必要と出てきて、認証が面倒そうだったのでやめた。
xlsではなく、最初からスプレッドシートを使っているなら面倒なことはないのかもしれない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?