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

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

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

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

Q&A

1回答

4049閲覧

Google Apps Scriptを使って、スマレジの売上ページを日次で関係者にメール配信

rewrite

総合スコア6

Google Apps Script

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

0グッド

0クリップ

投稿2018/04/23 14:24

編集2018/04/27 12:34

前提・実現したいこと

Google Apps Scriptを使って、スマレジの売上ページを日次で関係者にメール配信したいと思っております。まずはページへのログインというところで躓いております。。現時点ではこのソースのつづきで、画面キャプチャーをGopogleDriveに保管するようにしていますが、ログイン前の画面がキャプチャーされている状態です。よろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

Google

1 2function myFunction2() { 3 4// STEP1 対象サイトにログインする 5 6// ログインページ 7 var LOGIN_URL = "https://timecard.smaregi.jp/"; 8 // ID 9 var username = "ID"; 10 // パスワード 11 var password = "PWD"; 12 13 // HTTPリクエストのパラメータをobjectで設定 14 // POSTで渡すフォームデータはpayloadで指定します。 15 var options = { 16 method : "post", 17 followRedirects: false, // リダイレクト無し 18 payload : { 19 login_id: username, 20 password: password, 21 permanent:"on", 22 bookmarkItemRegistFlg:"Y", 23 refererURL:"https://timecard1.smaregi.jp/shifts/result_date" 24 } 25 }; 26 27 // ログイン 28 var response = UrlFetchApp.fetch(LOGIN_URL, options); 29 30 // レスポンスヘッダーからcookieを取得 31 var cookies = response.getHeaders()["Set-Cookie"]; 32 Logger.log(cookies); 33 34 35 36// STEP2 画面キャプチャーしてGoogleドライブに保存する 37 38 var url = "https://timecard1.smaregi.jp/shifts/result_date"; // ここにキャプチャしたいサイトのURL 39 var folderId = "GOOGLE DRIVE ID"; // ここに保存先GoogleドライブID 40 var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY-MM-dd-hh-mm-ss'); 41 var value = url + '?d=' + today; 42 var requestUrl = 'https://blinky.nemui.org/shot?uri=' + encodeURIComponent(value) + ';noresize=true;win_x=1000;effect=false;keepratio=true'; 43 try { 44 UrlFetchApp.fetch(requestUrl); // ここで1回リクエストを送って画像を作らせる 45 Utilities.sleep(1000 * 60); // 画像出来上がるまで1分待機 46 var image = UrlFetchApp.fetch(requestUrl).getBlob(); // ここで画像DL 47 var folder = DriveApp.getFolderById(folderId); 48 folder.createFile(image).setName(today); 49 } catch (e) { 50 Browser.msgBox(e); 51 } 52 53 54 55} 56 57 58

試したこと

他の方の質問などを参考にして見ましたが、なかなかうまく行きません。よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

https://blinky.nemui.orgがcookieを使ったアクセスをサポートしていないようです。そのため、GoogleAppScriptで事前にログインをしていても、`UrlFetchApp.fetch(requestUrl); // ここで1回リクエストを送って画像を作らせる`ではblinkyがcookieなしで、データを取得しに行くので、ログイン後の画像を取得することはできません。

cookieを渡して、キャプチャをとれるサービスかもしくは、GAS内部で(ライブラリなどを使って)画像を作成するかいずれかの手段が必要です。

投稿2018/05/02 19:57

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問