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

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

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

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

Q&A

解決済

1回答

784閲覧

Google Apps Scriptで”undefined のメソッド「tostring」を呼び出せません。”とエラーが出てしまう。

0kawa9

総合スコア6

Google Apps Script

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

0グッド

0クリップ

投稿2021/07/15 01:29

編集2021/07/15 01:35

実現したいこと

楽天・ヤフーの低評価レビューを取得しGoogleスプレッドシートに記載していくGoogle Apps Scriptがあります。
ヤフーのみ、”undefined のメソッド「tostring」を呼び出せません。”とエラーが出てしまい、
Googleスプレッドシートに転記されません。

数か月前までは問題なく動いていたのですがここ1か月ほどでエラーが出るようになりました。
初心者なので、コードをいじることはありませんでした。

楽天との記載を比較して確認してみたのですが、
原因が分からず、何か考えられえる要因がありましたらご教示いただけますと幸いです。

エラーメッセージ

イメージ説明

ソースコード

69行目あたりに問題あるとのことだったので前後のコードを添付させていただきます。
69行目に当たるのは、get_name = post_name[i] 部分になります。

for (rating = 1;rating <3;rating++){ var url = encodeURI('https://shopping.yahoo.co.jp/store_rating/' + shop + '/store/review/?filter_rating=' + rating + '&filter_comment=1') var response = UrlFetchApp.fetch(url); var html = response.getContentText('UTF-8'); var reg = /<div class="commentList" id="revlst">[\s\S]*?<div class="mdBasicPagination" id="pg">/g; var review_list = html.match(reg); //投稿日 reg = /さん[\s\S]*?class="created">.*?\s/g; var post_date = review_list[0].match(reg); //投稿者 reg = /<p class="raterName" data-rater-name>.*?</a>/g; var post_name = review_list[0].match(reg); //本文 reg = /さん[\s\S]*?class="created">[\s\S]*?<p class="content">[\s\S]*?</p>/g; var post_cnt = review_list[0].match(reg); //URL reg = /<a href="/user_review[\s\S]*?"/g; var post_url = review_list[0].match(reg); for(i = 0; i < post_date.length; i++){ get_date = post_date[i] .toString() .replace('','') .replace(/さん[\s\S]*?class="created">/,''); get_name = post_name[i] .toString() .replace(/<p class="raterName" data-rater-name>[\s\S]*?;">/,'') .replace('</a>',''); get_cnt = post_cnt[i] .toString() .replace(/さん[\s\S]*?class="created">[\s\S]*?<p class="content">/,'') .replace('</p>',''); get_url = post_url[i] .toString() .replace('<a href="','https://shopping.yahoo.co.jp') .replace('"','');

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

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

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

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

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

guest

回答1

0

ベストアンサー

forループでpost_dateの数だけループしていますね。
そのループの中でpost_date[i]を参照するのはいいのですが、
post_name[i]などを参照するのはおかしい気がします。
post_nameの数がpost_dateの数と一致している保証は無いからです。

投稿2021/07/15 02:03

itagagaki

総合スコア8402

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

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

0kawa9

2021/07/15 02:20

コメントありがとうございます。こちらのコード作成者が退職してしまったため、 ご指摘いただいた箇所でどう修正するのが正しいのかが分からずにいます。
0kawa9

2021/07/15 04:34

こちらの問題無事に解決できそうです。 この度はご指摘いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問