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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

Q&A

解決済

3回答

2979閲覧

GASとチャットワークを連携した勤怠管理システムを作りたい。

PEPNE

総合スコア5

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

0グッド

0クリップ

投稿2020/02/21 06:26

前提・実現したいこと

投稿者がプログラミング歴が浅い事(3ヵ月)
参考にしているサイトがあるという事。
https://tonari-it.com/gas-chatwork-time-card/
ライブラリにChatWorkClientを追加している事。

GASを利用し、スプレッドシートとchatworkを連携させ、
chatworkから勤怠連絡を指定グループチャット内に投稿した際に、スプレッドシートのデータシート上に投稿者の勤怠時刻が追加されるというサービスを実現したい。

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

SyntaxError: Unexpected identifier(行 13、ファイル「コード.gs」)

該当のソースコード

function recordTime(){ var params = { headers:{"X-ChatWorkToken":'APIトークン'}, method:"get" }; var roomID = "ルームID"; var url = "https:api.chatwork.com/v2/room/" + roomID +"/messages?force=0"; try{ var respons = UrlFetchApp.fetch(url,params); var json = JSON.parse(respons.getContentText()); for each(var obj in json){ if(obj.body.match(/出勤/)){ Logger.log("出勤"); }else if(obj.body.match(/退勤/)){ Logger.log("退勤"); } } }catch(e){ Logger.log("errorD") Logger.log(e.message) } }

試したこと

このシンタックスエラーが消えない限り、GASでプロジェクトの保存も出来ないので、そもそも構文ミスだと見当をつけてあたっています。

13行目のシンタックスエラーとの事だったので、for...in の書き方がおかしいのかと思い、エンジニアブログなどで確認などしたのですがどこが間違っているのか結局分からず。
(参考サイト http://www.ituore.com/entry/javascript-for#for-in%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E5%90%8D%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%97)

単純なミスだと思っているのですが、ドツボにはまり歯がゆいです。

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

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

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

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

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

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

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

guest

回答3

0

ベストアンサー

  • なぜ

2020/02/05 より google apps script で v8 engine が利用可能となりました。

それ以前は rhino というエンジンを利用しており、js の古いバージョンに依拠したコードが利用されていました。

for each of を for of せよというのは公式にはこちらから、日本語はこちらから確認できます。

これらの項目を全て自力で対応しなければ 2020/02/05 以前の記事は基本的には参考になりません。

  • 対処方法

どうやら新規にスクリプトを作ると v8 がデフォルトになるようですが、スクリプトエディタのメニューから、実行メニューを開き、v8 エンジンを無効にするを選択すると、参照したコードが動作するようになります。
(同じメニューが「有効にする」という状態になっていれば rhino なので変更不要です)

投稿2020/02/21 08:35

papinianus

総合スコア12705

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

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

papinianus

2020/02/21 08:36 編集

これは偏見ですが rhino であっても for each を使っているコードは参考にしないほうがいい気がします。
退会済みユーザー

退会済みユーザー

2020/02/21 08:38

default、切り替わったのか! 知りませんでした。 知らないと、色々やばいね^^;
papinianus

2020/02/21 08:47

デフォルト切り変わった、は未検証です、この2weeksの質問群でこれと似た質問がありそういう言及がありました(今回と同じくエンジンをかえなさいという回答がつき、それで解決していました) でも、既存のやつはかわらない、と思ってます(初日に自分で変更したので追試できない件)
退会済みユーザー

退会済みユーザー

2020/02/21 09:26 編集

試してみましたが、新規のファイルは切り替わるようですね。 追記) 既存は選択するようにメッセージが出ました。
PEPNE

2020/02/21 09:24

しっくりくる回答を得られたことをうれしく思います! 参考記事が少し時間がたったものだったので、このような状況になっていたのですね。 参考文書などは出来るだけ、新鮮な物を選ぶよう意識していきたいと思います。
guest

0

ほぼ、私信です^^;申し訳ない
新規でファイルを作成すると以下の文言が出て、V8 を使用するようです。

イメージ説明

既存は、切り替えるかメッセージが出る模様

イメージ説明

投稿2020/02/21 09:16

編集2020/02/21 09:25
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

JavaScriptにおけるfor each()という記法は(少なくとも現在の仕様では)存在しないと思います。

投稿2020/02/21 06:50

kei344

総合スコア69407

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

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

PEPNE

2020/02/21 07:09

回答ありがとうございます。 調べてみたところ、for each()の記法は確かに存在しませんでした。 参考にしているサイトではfor eachを利用した繰り返しの処理をしていたので、ついそれに倣おうと思ってしまいました。 JavaScriptにおける繰り返し処理を行える構文を探して組み込んでみる事に致します。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問