【GAS】共有フォルダの一括作成、PDFのファイル名に対応する共有フォルダに移動させるスクリプト

Google Apps Script(GAS)を使って以下の3つのスクリプトを作成しました

  1. 発注書を対応する共有フォルダに移動するスクリプト(1日1回実行)

  2. 品番リストを読み込んで共有フォルダを作成するスクリプト(年度で1回実行)

  3. 共有フォルダのリンクURLをスプレッドシートにまとめるスクリプト(年度で1回実行)

1. 発注書を対応する共有フォルダに移動するスクリプト

function movePurchaseOrders() {
  // 発注書が保存されているフォルダのID
  var sourceFolderId = 'YOUR_SOURCE_FOLDER_ID';
  // ソースフォルダの取得
  var sourceFolder = DriveApp.getFolderById(sourceFolderId);
  // ソースフォルダ内のファイルを取得
  var files = sourceFolder.getFiles();
  
  while (files.hasNext()) {
    var file = files.next();
    var fileName = file.getName();
    // 最初の5桁を品番として取得
    var itemNumber = fileName.substring(0, 5);
    try {
      // 対応するフォルダの取得
      var targetFolder = DriveApp.getFoldersByName(itemNumber).next();
      // ファイルを移動
      targetFolder.addFile(file);
      sourceFolder.removeFile(file);
    } catch (e) {
      Logger.log('Folder for item number ' + itemNumber + ' not found.');
    }
  }
}

2. 品番リストを読み込んで共有フォルダを作成するスクリプト

function createSharedFolders() {
  // 品番リストのスプレッドシートID
  var sheetId = 'YOUR_SPREADSHEET_ID';
  // 品番リストがあるシート名
  var sheetName = 'YOUR_SHEET_NAME';
  
  // シートの取得
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  // 品番リストの取得
  var data = sheet.getDataRange().getValues();
  
  for (var i = 0; i < data.length; i++) {
    var itemNumber = data[i][0].toString();
    // フォルダの作成
    var newFolder = DriveApp.createFolder(itemNumber);
    // フォルダの共有設定(必要に応じて)
    newFolder.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
  }
}

3. 共有フォルダのリンクURLをスプレッドシートにまとめるスクリプト

function listFolderLinks() {
  // 品番リストのスプレッドシートID
  var sheetId = 'YOUR_SPREADSHEET_ID';
  // 品番リストがあるシート名
  var sheetName = 'YOUR_SHEET_NAME';
  // 結果を保存するシート名
  var resultSheetName = 'YOUR_RESULT_SHEET_NAME';
  
  // シートの取得
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  var resultSheet = SpreadsheetApp.openById(sheetId).getSheetByName(resultSheetName);
  resultSheet.clear(); // 以前の結果をクリア
  // 品番リストの取得
  var data = sheet.getDataRange().getValues();
  
  var result = [];
  for (var i = 0; i < data.length; i++) {
    var itemNumber = data[i][0].toString();
    try {
      // 対応するフォルダの取得
      var folder = DriveApp.getFoldersByName(itemNumber).next();
      var folderUrl = folder.getUrl();
      result.push([itemNumber, folderUrl]);
    } catch (e) {
      Logger.log('Folder for item number ' + itemNumber + ' not found.');
      result.push([itemNumber, 'Folder not found']);
    }
  }
  
  // 結果をスプレッドシートに書き込む
  resultSheet.getRange(1, 1, result.length, 2).setValues(result);
}

ここから先は

330字

¥ 1,500

この記事が気に入ったらチップで応援してみませんか?