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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

638閲覧

意図せず処理がループしてしまう原因が分かりません

T_mari

総合スコア73

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/01/04 05:00

こんにちは。
if文の初歩的な質問かとは存じますが解決方法がどうしても分からずお知恵をお借りしたく存じます。

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

Exception: Request failed for https://hogehoge.backlog.jp returned code 404.

具体的な原因として下記コード3行目のAPI URLが2回目の呼び出しがされていることが問題ということまでは理解しているのですが、
根本的にループしている原因がどうしても分からず対処ができておりません。

該当のソースコード

GoogleAppScript

1function backlog_taskAPI(task_key,target) { 2 const apiurl = 'https://hogehoge.backlog.com/api/v2/issues/' + task_key +'?apiKey='; 3 console.log(apiurl);//意図しない2回目が実行されtask_Keyにundefinedが代入された状態で実行される 4 const response = UrlFetchApp.fetch(apiurl).getContentText(); 5 const obj = JSON.parse(response); 6 let returnValue =''; 7 //返り値の条件分岐式ここから 8 if(target == 'created'){//作成日を返す 9 returnValue = new Date(obj.created); 10 }else if(target == 'updated'){//更新日を返す 11 returnValue = new Date(obj.updated); 12 }else if(target == 'status'){//ステータスを返す 13 returnValue = obj.status.name; 14 }else if(target == 'assignee'){//担当者を返す 15 returnValue = obj.assignee.name; 16 }else{ 17 returnValue = '#ERROR'; 18 } 19 return returnValue; 20} 21console.log(backlog_taskAPI('task_key','target'));

補足情報

ユーザー定義関数として利用予定でスプレッドシート側から実行するとエラーは出ないのですが、
エディタ上で実行すると(console.logの引数を置換)どうしてもエラーが出てきます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

console.log〜を別の関数(下記で言えばmyFunction)の中に移動し、その関数(myFunction)を実行してみてはいかがでしょうか。

function myFunction(){ console.log(backlog_taskAPI('task_key','target')); } 以下略

投稿2022/01/04 06:55

編集2022/01/04 06:57
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

T_mari

2022/01/04 07:19

ご回答ありがとうございます。 ご提案頂いた方法でエディタ上でも想定した通りの挙動で確認できました。 今後エディタ上でテストをする際にはこの方法で実施したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問