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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

1492閲覧

[GAS] 正規表現とdateを合わせてファイルを取得する

amazon_106

総合スコア50

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2020/04/23 10:50

編集2020/04/23 13:13

実現したいこと
Google Driveから時間指定したファイルを取得する

GoogleDrive内
20200423-190003.jpg
20200423-200004.jpg
20200423-210002.jpg
// 毎時、アップロードされる。

function myFunction() { var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMdd-HH'); var i = date + ".jpg"; Logger.log(i); var file = DriveApp.getFilesByName(Utilities.formatString('%s', i)).next(); GmailApp.sendEmail( 'example@gmail','件名','本文', {attachments:[file]} ); }

Google Drive上に20200423-19.jpgを作成すると、ちゃんと上記のコードで個人のメールアドバイスに送られます。が、20200423-19mmss.jpgを指定する正規表現をどれを試しても送付されずにいます。簡単なことだと思いますが、わからず困っています。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

20200423-19.jpgを探しているので、20200423-190003.jpg等がヒットしないのは当たり前です。
部分一致で検索するメソッドは無さそうなので、JPEGファイルをすべて検索してファイル名が一致するか調べるのはどうでしょう。

JavaScript

1function myFunction() { 2 var date = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyyMMdd-HH"); 3 var regexp = RegExp(date + "[0-9]{4}.jpg", "i"); 4 5 var fi = DriveApp.getFilesByType(MimeType.JPEG); 6 var file; 7 while (fi.hasNext()) { 8 var _file = fi.next(); 9 if (regexp.test(_file.getName())) { 10 file = _file; 11 break; 12 } 13 } 14 15 GmailApp.sendEmail("example@gmail", "件名", "本文", { 16 attachments: [file], 17 }); 18}

投稿2020/04/23 20:45

draq

総合スコア2573

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

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

amazon_106

2020/04/23 23:05

ご回答ありがとうございます。 無事、メール送付されました。 ただ、すべてのフォルダから20200423-190003.jpg(今の時間)のものが検索されてしまいます。 自分がフォルダ指定をしても、エラーが出てしまい、うまく行きません。 質問と追加になってしまい大変申し訳ないのですが、 ・フォルダを指定し、その中のファイル検索 のコードをご教授頂いてもよろしいでしょうか。
amazon_106

2020/04/23 23:07

var folder = DriveApp.getFolderById("ID"); var fi = folder.getFilesByType(MimeType.JPEG); 自分はこのようなコードを書きましたが、GmailApp.sendEmailのところで無効な引数:attachmentsと出てしまいます。
amazon_106

2020/04/23 23:18

var id = "id"; var folder = DriveApp.getFolderById(id); var fi = folder.getFilesByType(MimeType.JPEG); こちらのコードにて、フォルダ指定ができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問