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

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

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

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

Q&A

解決済

2回答

10140閲覧

GAS PDF 定期自動ダウンロード

TakeWaku

総合スコア6

Google Apps Script

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

0グッド

0クリップ

投稿2020/03/06 04:29

編集2020/03/06 04:42

Google Apps Scriptを使って、所定HPからPDFファイルを、定期的に自動ダウンロードして、Gドライブに日付の入った名前を付けて保存(自動メール配信)をしたいのですが可能でしょうか。

例えば、毎月更新される(ファイル名は変わらない)、このファイルになります。
https://www.mizuhobank.co.jp/market/pdf/mid/midcba.pdf

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

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

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

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

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

Takumiboo

2020/03/06 05:28

可能かどうか、という質問では大抵のことは可能という回答になります。 teratailはやりたいことを丸投げにする場ではないので、まずは自分で作ってみて、躓いたときに質問するようにしてください。 https://teratail.com/help/avoid-asking 「GAS ファイル ダウンロード」などの検索ワードで、tetsunosukeさんが提示してくださったページもすぐに見つかります。まずは自分で調べるようにしましょう。
papinianus

2020/03/06 11:27

ライセンス的に自動取得、自動配信してよいやつですか?確認とれているなら回答書きます。
guest

回答2

0

ベストアンサー

オープンになってるPDFなのでシンプルに取得して、ドライブに生成してメールに添付して送るだけでいけますよ。

みずほのPDFを取得してメールで送るサンプル

Gドライブということなので、Google Drive File Streamなどを使ってGoogle Driveをローカルドライブとして利用してるのだろうということと、また定期的ということなので、後はスクリプトトリガーを使って、定期的にmizuhomanを実行すれば、定期的に取得して自分自身に送ってくれます。

参考:

コードとしては、

javascript

1function mizuhoman() { 2 //対象となるPDF 3 var url = "https://www.mizuhobank.co.jp/market/pdf/mid/midcba.pdf"; 4 5 //日付を生成する 6 var dateman = new Date(); 7 var namedate = dateman.getFullYear(dateman) + "_" + dateman.getMonth(dateman) + "_" + dateman.getDate(dateman) + ".pdf"; 8 9 //PDFを取得する 10 var pdf = UrlFetchApp.fetch(url).getBlob().setName(namedate); 11 12 //Driveにファイル生成 13 var pdfid = DriveApp.getFolderById("ここに生成先フォルダのIDを入れる").createFile(pdf).getId(); 14 15 //作成したPDFファイルをメールに添付して送る 16 var mail = GetUser(); 17 var subject = 'PDF送りましたよっと。' 18 var body = 'テストPDFの送信パート2' 19 MailApp.sendEmail(mail, subject, body, {attachments:pdf}); 20 21} 22 23//現在のユーザのアドレスを取得 24function GetUser() { 25 var objUser = Session.getActiveUser(); 26 return objUser.getEmail(); 27}

投稿2020/03/06 13:12

officeforest

総合スコア412

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

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

TakeWaku

2020/03/09 05:03

できました! ありがとうございました!
guest

0

できますよ。
こちらの例はCSVファイルのダウンロード→ドライブへの保存 です。
https://asumeru.net/gas_csv_auto_download

認証が必要ないはずなので、もっとシンプルにできると思います。

自動メールの配信は、こちらなどを参考にされるとよいかと
https://qiita.com/tnoce/items/bf7001ddfd4b8df5694d

どのくらいGASを理解されているかわからなかったので、このくらいのヒントにしておきます。

投稿2020/03/06 04:37

tetsunosuke

総合スコア1292

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

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

TakeWaku

2020/03/06 04:56

早速ありがとうございます。 認証らしき部分を省いて、見よう見まねで下記のコードで試したのですがエラーが出てうまくいきません。 エラーは「ReferenceError: options is not defined(行 4、ファイル「コード」)」です。 function myFunction() { // CSVファイル取得 var CSV_DOWNLOAD_URL = "https://www.mizuhobank.co.jp/market/pdf/mid/midcba.pdf"; response = UrlFetchApp.fetch(CSV_DOWNLOAD_URL, options); var content = response.getContentText("UTF-8"); // Googleドライブへアップロード DriveApp.createFile('みずほからダウンロードしたPDFファイル', content, MimeType.CSV); }
tetsunosuke

2020/03/06 05:00

optionsが定義されていないからですね。 この場合のoptionsにもとのサンプルで想定されていたのは認証に関わる情報なので var response = UrlFetchApp.fetch(CSV_DOWNLOAD_URL); で、ひとまず問題は解決できると思います(が、ここから先もそれなりに試行錯誤することになりそうですね。MimeType.CSVのところも、多分変更しないといけないでしょうし。 あとこれも別のサンプルなどを調べたほうがいいと思いますが getContentText もCSVファイルなのでテキストですが、 こちらの例(こちらは画像です) のように、getBlob() を使わないといけないかなと思います。 https://a-zumi.net/google-apps-script-image-download-save-google-drive/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問