【GAS、Google Spreadsheet】Googleドライブ内の指定したフォルダに所定のファイルをコピーするスクリプトです

Code

はじまり

135ml
135ml

おい! あの庭どうなってるんだ!

リサちゃん
リサちゃん

え? どうしたどうした・・・

・・・あー、大根を干している間につい食べてしまうから、あらかじめ大量に敷いておけば食べても大丈夫だと思ったわけよ。

135ml
135ml

敷き過ぎだ!

福岡県のどっかにある太陽光発電パネル並に敷き詰められているじゃないか! メガ沢庵じゃないか!

リサちゃん
リサちゃん

はっはー! まあ気長に待ってくれよ!

はい、今回のスクリプトです! ボリボリ

ツールの紹介

今回のツールは、下記のシートの赤線で囲まれた部分になります。

J4セルから、以下の情報が入力されています。

  • J4セル・・・出力先フォルダのID
  • J5セル・・・出力先フォルダのURL
  • J6セル・・・コピー先のファイル名(今回は「【Quora】」)
  • J7セル・・・コピーで作成するファイル数

そして、「copyFileToTargetFolder()」ボタンを押すとスクリプトが走り、終了するとJ4セルのIDのフォルダ内に、J6セルのファイル名のファイルが作成されます。

実際に確認します。J5セルをクリックして、フォルダのURLに飛びます。すると、ファイルが作成されていることが確認できます。

シートの造り

ボタンに割り当てられている関数は、「copyFileToTargetFolder」となっています。

スクリプトの紹介

以下が今回使用したスクリプトになります。

拡張機能から「Apps Script」を開いて、以下のスクリプトを打ち込んで先程のシートの設定をすると、使用できます。

出力元となるテンプレートファイルをTemplateFileで定義します。

そして、TemplateFile.makeCopy('出力するファイル',' 出力先フォルダ')で、ファイルを作成します。

コード.gs

function copyFileToTargetFolder() {
  // 変数宣言
  var OutputFolderId,
    OutputFileName,
    OutputFileAmount,
    sheetName = '【出力結果】フォルダのURL',
    ss,
    column_index;
  ss    = SpreadsheetApp.getActive();
  sheet = ss.getSheetByName(sheetName);
  column_index = 10; // J列のインデックス
  OutputFolderId   = sheet.getRange(4, column_index).getValue();         // 出力先フォルダID(H4セルのフォルダID)
  OutputFileName   = sheet.getRange(6, column_index).getValue();         // 出力ファイル名(H6セルのファイル名)
  OutputFileAmount = Number(sheet.getRange(7, column_index).getValue()); // 出力ファイル数(H7セルのファイル数)
  
  // テンプレートファイル(「yyyyMMdd(E)」)
  var TemplateFile = DriveApp.getFileById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  // 出力先フォルダ(H4セルのフォルダ)
  var OutputFolder = DriveApp.getFolderById(OutputFolderId);

  // ファイルをコピーする。
  for (let k = 0; k < OutputFileAmount; k++) {
    TemplateFile.makeCopy(OutputFileName, OutputFolder);
  }

  // ●実行ステータス入力:完了確認(H8セルへのステータス確認)
  // Utilities.sleep(1000);
  sheet.getRange(8, column_index).setValue('Terminated!');
  // ●実行ステータス入力:実行待ち(H8セルへのステータス入力)
  // Utilities.sleep(1000);
  // sheet.getRange(8, column_index).setValue('Waiting...');
}

おしまい

リサちゃん
リサちゃん

今回はこんなもんだね。ファイルをコピーして移動する時にフォルダを遷移するのが面倒くさいから、これが地味に役立ちますね。

135ml
135ml

そうだな。コピーしまくれるな。

・・・大根もコピーしまくりやがって。

リサちゃん
リサちゃん

はっはー! 上手いこと言うねえー!

大根も美味いなあー!! ボリボリ

135ml
135ml

うーん、このペースで食ってて、果たして本当に沢庵ができるのやら・・・ボリボリ

リサちゃん
リサちゃん

おい! 他人の大根を食べるなぁー!!

135ml
135ml

他人の家で干している大根を食べて怒られるとは・・・、理不尽だ・・・。

おまけ

ペンギン
ペンギン

今回使ったシートの他の関数を紹介した記事は以下になります。よければ見てみて下さい!

以上になります!

コメント

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