GAS Folder.createFileで始める自動ファイル整理術:定期実行で快適なファイル管理

GAS Folder.createFileで始める自動ファイル整理術:定期実行で快適なファイル管理

日々の業務で増え続けるファイル、整理に時間がかかっていませんか?GAS(Google Apps Script)のFolder.createFileを使えば、ファイルの自動生成と整理を簡単に行い、業務効率を大幅に向上させることができます。この記事では、Folder.createFile関数の基本的な使い方から、定期実行によるファイル整理、メール送信との連携まで、具体的なコード例を交えながら解説します。

Folder.createFileとは?

Folder.createFile(name, content, mimeType)は、指定されたフォルダ内に新しいファイルを作成するGASの関数です。この関数を使うことで、ドキュメント、スプレッドシート、PDFなど、様々な種類のファイルをプログラムから自動的に生成できます。

  • name: 作成するファイルの名前
  • content: ファイルの内容(文字列)
  • mimeType: ファイルのMIMEタイプ(例: MimeType.GOOGLE_DOCS, MimeType.PDF

定期実行によるファイル整理の実装

GASのトリガー機能を活用することで、Folder.createFileを使ったファイル生成処理を定期的に実行できます。例えば、毎日特定の時間にレポートファイルを自動生成し、特定のフォルダに保存する、といった処理を自動化できます。

実装例1:日次レポートの自動生成

毎日指定時間に、日次レポート(Googleドキュメント)を自動生成し、特定のフォルダに保存するスクリプトです。

function createDailyReport() {
// フォルダIDを設定
const folderId = "YOUR_FOLDER_ID";
// フォルダを取得
const folder = DriveApp.getFolderById(folderId);
// 現在の日付を取得
const today = Utilities.formatDate(new Date(), "JST", "yyyy-MM-dd");
// ファイル名を作成
const fileName = "日次レポート_" + today;
// ファイルの内容を作成(テンプレート)
const content = "## 本日のレポート

日付: " + today + "

内容:

";
// ファイルを作成
const file = folder.createFile(fileName, content, MimeType.GOOGLE_DOCS);
// ドキュメントを開く
const doc = DocumentApp.openById(file.getId());
// ドキュメントの本文を取得
const body = doc.getBody();
// 本文にテキストを追加
body.appendParagraph("ここにレポート内容を記述します。");
}

カスタマイズ方法:YOUR_FOLDER_IDを実際のフォルダIDに置き換えてください。また、contentの内容を調整することで、レポートのテンプレートを自由にカスタマイズできます。

実装例2:月次請求書PDFの自動生成と保存

毎月月末に、請求書(PDF)を自動生成し、顧客ごとにフォルダを作成して保存するスクリプトです。この例では、Spreadsheetから顧客データを取得し、請求書を作成することを想定しています。

function createMonthlyInvoice() {
// スプレッドシートIDとシート名を設定
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "顧客データ";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
// シートを取得
const sheet = ss.getSheetByName(sheetName);
// 顧客データを取得(2行目から最終行まで)
const data = sheet.getDataRange().getValues().slice(1);

// フォルダIDを設定(請求書保存先)
const baseFolderId = "YOUR_INVOICE_FOLDER_ID";
const baseFolder = DriveApp.getFolderById(baseFolderId);

data.forEach(row => {
// 顧客名、請求金額などを取得
const customerName = row[0];
const invoiceAmount = row[1];
// 顧客フォルダを作成(存在しない場合)
let customerFolder;
try {
customerFolder = baseFolder.getFolder(customerName);
} catch (e) {
customerFolder = baseFolder.createFolder(customerName);
}
// 請求書の内容(HTML形式)
const htmlContent = `

請求書

顧客名: ${customerName}

請求金額: ${invoiceAmount}円

`;
// PDFに変換するためのオプション
const pdfOptions = {
"conversionProperties": {
"orientation": "portrait",
"size": "A4"
}
};
// HTMLコンテンツをPDFに変換
const pdfBlob = Utilities.newBlob(htmlContent, MimeType.HTML).getAs("application/pdf");

// ファイル名を作成
const fileName = `請求書_${customerName}_${Utilities.formatDate(new Date(), "JST", "yyyyMMdd")}.pdf`;
// PDFファイルを作成
customerFolder.createFile(pdfBlob.setName(fileName));
});
}

カスタマイズ方法:YOUR_SPREADSHEET_IDYOUR_INVOICE_FOLDER_IDを実際のIDに置き換えてください。スプレッドシートの構成に合わせて、row[0], row[1]などのインデックスを調整してください。また、htmlContentを調整することで、請求書のレイアウトを自由にカスタマイズできます。

よくある問題とトラブルシューティング

  • 権限エラー: スクリプトがGoogleドライブへのアクセス権を持っていない場合、エラーが発生します。スクリプトの実行時に権限を許可するか、Google Cloud PlatformでOAuth同意画面の設定を確認してください。
  • フォルダIDの間違い: DriveApp.getFolderByIdで指定したフォルダIDが存在しない場合、エラーが発生します。正しいフォルダIDを指定しているか確認してください。
  • ファイル名の重複: 同じフォルダ内に同じ名前のファイルを作成しようとすると、エラーが発生します。ファイル名に日付やタイムスタンプを含めるなど、ファイル名が重複しないように工夫してください。

カスタマイズ方法と応用例

  • メール送信との連携: MailApp.sendEmailを使って、生成したファイルをメールで自動送信できます。
  • Googleフォームとの連携: Googleフォームの回答をトリガーにして、回答内容に基づいたファイルを自動生成できます。
  • エラーハンドリング: try...catch構文を使って、エラー発生時の処理を記述することで、スクリプトの安定性を向上させることができます。

まとめ

GASのFolder.createFile関数と定期実行トリガーを組み合わせることで、ファイルの自動生成と整理を効率的に行うことができます。この記事で紹介したコード例を参考に、ぜひ業務効率化に役立ててください。