google apps scriptを使用した際に躓いた点や解決した問題。ScriptApp.getScriptTriggers は推奨されていません。

公開日: : 最終更新日:2016/03/10 google apps script

ScriptApp.getScriptTriggers は推奨されていません。サポート終了の方法は今後削除されることがあるので、使用しないでください。別のソリューションの使用をご検討ください。
toeicやtoeflでわからない単語をインターネット辞書で少しずつ調べていたのですが、すごく手間だったんですよね。

何かいい方法はないかと調べていたら英和辞書一括検索というExcelなどの単語一覧を一括で検索して入力するというのを見つけました。

しかし、お金がかかったりするので自分で自作してみようと思いました。

スポンサーリンク

google app scriptを使って処理を自動化

google spreadsheet(Micro softのExcelと似たもの)を使って単語一覧から一つずつ検索して日本語訳や品詞、発音などを自動的に入力する機能を作ったのですが、google app scriptを理解しきれていないのか、いくつかわからないところ、解決したところがあるので記事にします。

ScriptApp.getScriptTriggers は推奨されていません

[解決済み]
スクリプトを実行していて「ScriptApp.getScriptTriggers は推奨されていません。サポート終了の方法は今後削除されることがあるので、使用しないでください。別のソリューションの使用をご検討ください。」というヒントメッセージが表示された場合は。

getScriptTriggersをgetProjectTriggers()に代替変更すれば対応できるようです。

stackoverflowというサイトのMethode ScriptApp.GetScriptTriggers” has been marked as outdatedの記事を参照しました。

ScriptPropertiesが非推奨

[解決済み]
PropertiesService.getScriptProperties()を代替使用する

UrlFetchApp.fetchを使用時に無効な引数(Invalid argument)のエラーが発生

[解決済み]
urlに+が含まれていても特にこのエラー発生しませんが、”(ダブルクォーテーション)だとこのエラーが発生しました。
URLエンコード?していなかったためですが、”の場合は%22に変更で対応可能です。google apps scriptだとencodeURIComponentを使えばいいのかな?とりあえず%22を直書くことでしのぎました。

XmlServiceのElementでtagnameがolの文字列が取得できない

[一時的解決]
直接,XmlService.parseに渡すと&とかでエスケープされてないとエラーになるデータだったのでescapeHtmlとかしてみると、いろいろエラーを吐く(XmlService.parseの仕様にあわないデータ構造?)なので以下のように、Xml.parseを一回噛ませてから処理を行っている。

var doc = Xml.parse(res.getContentText(), true);
var bodyHtml = doc.html.body.toXmlString()
doc = XmlService.parse(bodyHtml);
var root = doc.getRootElement();

しかし、これだと


<ol>テスト</ol>

のデータが


<ol/>テスト

となってしまい(xmlのNameSpace xmlnsを解決する必要がある?)、またXmlServiceのgetDescendantsなどへのNamespaceの渡し方がわからないので、とりあえずの対処として


<ol/>テスト

となっている箇所をreplaceすることで回避した。

google apps scriptのデバッグ機能変数の中身が全部nullとか

[未解決]
上記のolタグの値が取れないため(これは解決済み)、デバッグ機能で現在使用している変数の参照機能があったので使用してみたが、Objectとか配列が取得できているのは確認できるが、細かい中身を見てもnullとかで何が設定されているかわからない。取得できている変数などの中身も確認できないので、これってどうやって使用するの?
後はjp_honyaku[3]とかって表示されるけど、0,1しか見れないとか残りのもうひとつは何に対応してるんだろうか。ちょっと見方がわからない。

Google Apps Scriptで5分以上処理が行われると、「起動時間の最大値を超えました」の エラーが発生

[一時的解決]
PC側だけで処理を行っている訳ではないためか、起動時間の5分制限があるようです。起動から時間チェックして制限を越えたら、トリガーを作成して何分後から再実行する対応があるようですが、はじめはうまく行ったように見えたのですが、途中から機能しなくなりました。googleサーバーからBanされている?手動で再設定してみたら動いたり?±15分ぐらいのラグがあるとか見つかったのですが、解決方法がよくわからないので、現状は5分ごとに手動再実行でしのぎました・・・

まぁ、それでも自力で単語訳をひとつずつ検索して入力するより早いんですけどね。

追記:Script.newTrigger(“再開するファンクション名”).timeBased().everyMinutes(値).create()など毎分や毎時の設定をすることで失敗しても再開できるようにする。再開時に全トリガーを削除する。

一度newTriggerを実行するのではなく、毎分など連続コールする対応で5分制限を回避できるようになりましたが、コンピュータで実行しすぎみたいなメールが結構送られてきますね・・・一応機能していますが。

スポンサーリンク

まとめ

google apps scriptは私の理解不足もあり、ExcelのVBAよりも使いづらい気がしました。
一応自分が思っていたネット辞書から英単語一括検索する機能を実装できました(現状では5分制限があるので、その辺り不十分。しかしToeic,Toefl合わせて数千単語のスプレッドシートへの変換済み)が、英辞郎という書籍(英辞郎データ含む 7th edition)を持っているのでそちらを使って単語一括検索を実現したほうが早い気もしてきました。

もっと簡単な方法ってあるのかな。

SPONSORED LINK
PR

おすすめの商品を紹介しています。

Hackers TOEFL ListeningハッカーズTOEFLのリスニング :3rd iBT Edition

勉強法としてTOEFLを知り尽くしているHACKERSの韓国本TOEFLを利用して大量の英文を聞いて

レビューを読む

no image

今まではToeflというと海外の大学留学への登竜門として利用されてきた英語試験だったかと思います

レビューを読む

Anker® Astro E5 モバイルバッテリー 16000mAhの大容量により、ほとんどのスマートフォンやタブレットを数回充電できる

お出かけした際に、スマホなどの携帯やタブレットの充電が切れてしまって困ったことはありませんか?私

レビューを読む



当ブログの人気エントリ一覧。おすすめです

  コメント

0
入力フォームを隠す

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


 
PAGE TOP ↑