質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

2989閲覧

GAS:指定したドライブに新規フォルダを作成し、移動したいファイル名と一致した場合に移動させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2022/05/23 03:50

実現したいこと

まずドライブに新規フォルダを作成し名前を指定したいです。
その後、作成した新規フォルダと既に格納されているファイル名が一致した場合
一致したフォルダにファイルを移動したいという内容になります。

また作成したフォルダへ更に2つ名前を指定したフォルダも作成したいです。
このフォルダ名は固定で作成された際に必須で作成したい。(例 メモ リストの2つ)

フォルダを作成する、ファイル名を移動させるを単体では実行できたのですが
組み合わせる事や改修が自身で出来ず困っております。

ご教授いただけれますと幸いです。

該当のソースコード

GAS

1function CreateNewFolder() { 2 // ↓↓指定したドライブに新規のフォルダを作成する↓↓ 3 4 //新規ファイルを作成したいドライブ 5 var folder = DriveApp.getFolderById("●●●●●"); 6 7 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 8 var sheet = spreadsheet.getSheetByName("sheet1");//シート指定 9 10 //各情報の取得 11 var startdate = sheet.getRange("A1").getValue(); 12 var startdate1 = Utilities.formatDate(startdate,'Asia/Tokyo','yyyy/MM/dd'); 13 var kinds = sheet.getRange("A2").getValue(); 14 var CompanyName = sheet.getRange("A5").getValue(); 15 var productname = sheet.getRange("A7").getValue(); 16 Logger.log(startdate1 + "_" + kinds + "_" + CompanyName + "_" + productname);//確認用 17 18 var folderName = `${startdate1}_${kinds}_${CompanyName}_${productname}`;//フォルダ名の指定 19 20 //フォルダ作成 21 var name = folderName; 22 folder.createFolder(name); 23   ↑ 24 この作成されたフォルダへ更にフォルダを必須で作成したい。(メモ・リストの2つ) 25 26 // ↑↑指定したドライブに新規のフォルダを作成する↑↑ 27 28 // ↓↓上記で作成したフォルダへ指定のファイル移動↓↓ 29 30 //移動「前」のファイル名 31 var INPUT_file_name = folderName//名前が同じため引用 32 33 //移動「後」のディレクトリ取得 34 var OUTPUT_dir = DriveApp.getFolderById("●●●●●"); 35  ↑ 36 ここを folder.createFolder(name);で作成したフォルダへの可変式にしたい。 37 38 //ファイルオブジェクトの取得 39 var file = INPUT_dir.getFilesByName(INPUT_file_name).next(); 40 41 //ファイルの移動 42 OUTPUT_dir.addFile(file); 43 folder.removeFile(file); 44 45 // ↑↑上記で作成したフォルダへ指定のファイル移動↑↑ 46}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この作成されたフォルダへ更にフォルダを必須で作成したい。(メモ・リストの2つ)

gs

1 function CreateNewFolder() { 2 // ↓↓指定したドライブに新規のフォルダを作成する↓↓ 3 4 //新規ファイルを作成したいドライブ 5 var folder = DriveApp.getFolderById("●●"); 6 7 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 8 var sheet = spreadsheet.getSheetByName("sheet1");//シート指定 9 10 //各情報の取得 11 var startdate = sheet.getRange("A1").getValue(); 12 var startdate1 = Utilities.formatDate(startdate,'Asia/Tokyo','yyyy/MM/dd'); 13 var kinds = sheet.getRange("A2").getValue(); 14 var CompanyName = sheet.getRange("A5").getValue(); 15 var productname = sheet.getRange("A7").getValue(); 16 Logger.log(startdate1 + "_" + kinds + "_" + CompanyName + "_" + productname);//確認用 17 18 var folderName = `${startdate1}_${kinds}_${CompanyName}_${productname}`;//フォルダ名の指定 19 20 //フォルダ作成 21 var name = folderName; 22 // folder.createFolder(name); 23 // フォルダを作成し、作成したフォルダに「メモ」「リスト」のフォルダを作成 24 let f = folder.createFolder(name); 25 f.createFolder('メモ'); 26 f.createFolder('リスト'); 27 28 //  ↑ 29 // この作成されたフォルダへ更にフォルダを必須で作成したい。(メモ・リストの2つ) 30 31 // ↑↑指定したドライブに新規のフォルダを作成する↑↑ 32 33 // ↓↓上記で作成したフォルダへ指定のファイル移動↓↓ 34 35 //移動「前」のファイル名 36 var INPUT_file_name = folderName//名前が同じため引用 37 38 //移動「後」のディレクトリ取得 39 // 既に「移動後」フォルダは作成しているので、取得不要 40 // var OUTPUT_dir = DriveApp.getFolderById("●●●●●"); 41 42 // もし「DriveApp.getFolderById」を使用するなら 43 // var OUTPUT_dir = DriveApp.getFolderById(f.getId()); 44 45 // ↑ 46 // ここを folder.createFolder(name);で作成したフォルダへの可変式にしたい。 47 48 //ファイルオブジェクトの取得 49 var file = INPUT_dir.getFilesByName(INPUT_file_name).next(); 50 51 //ファイルの移動 52 // OUTPUT_dir.addFile(file); 53 f.addFile(file); 54 folder.removeFile(file); 55 56 // ↑↑上記で作成したフォルダへ指定のファイル移動↑↑ 57}

createFolder() の戻り値が 作成したFolder型なので、
同じようにcreateFolder() を行うと可能かと思います。
createFolderのリファレンス

ここを folder.createFolder(name);で作成したフォルダへの可変式にしたい。

作成したフォルダが「移動後」のフォルダで問題無いでしょうか?
その場合、上で定義した「folder.createFolder(name);」 の戻り値を利用すれば良いかと。

gs

1 let f = folder.createFolder(name); 2 3~~ 省略 ~~ 4 5// var OUTPUT_dir = DriveApp.getFolderById("●●●●●"); 6 7~~ 省略 ~~ 8 9// OUTPUT_dir.addFile(file); 10 f.addFile(file);

投稿2022/05/23 04:32

編集2022/05/23 06:10
k.a_teratail

総合スコア845

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/05/23 05:29

ご回答ありがとうございます。 作成したフォルダが「移動後」のフォルダで問題無いでしょうか? →おっしゃる通りです。 「folder.createFolder(name);」 の戻り値を利用すれば良いかと。 →物分かり悪く申し訳ないですが DriveApp.getFolderById()を使用しフォルダIDを取得するという解釈で合っていますでしょうか。
k.a_teratail

2022/05/23 06:08

いいえ。 既に「let f = folder.createFolder(name);」でフォルダを作成しているので 「DriveApp.getFolderById()」 をフォルダを取得する必要がないということです。 > DriveApp.getFolderById()を使用しフォルダIDを取得する もし、この方法を使用するのであれば、下記のようにすると良いです。 var OUTPUT_dir = DriveApp.getFolderById(f.getId()); コード省略書きだから、わかりにくくなっているかもですね。 コード全体を記載しますので、ご確認の方よろしくお願いします。
退会済みユーザー

退会済みユーザー

2022/05/23 06:47

細かくありがとうございます。 いただいた内容で問題なく対応できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問