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

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

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

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

JavaScript

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

Q&A

1回答

1569閲覧

【GAS】ウェブアプリケーションとしてデプロイしたAPIが帰ってこない

fukkatuno_f

総合スコア0

Google Apps Script

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

JavaScript

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

0グッド

0クリップ

投稿2022/03/08 04:36

前提・やりたいこと

特定のジャンルに特化した辞書アプリ(android)を制作しようと思い、そのデータ取得APIとしてGASのspreadsheetAppを経由することにしました。イメージ説明
(画像見づらくてすみません)
後述するGASの通り、スプレッドシートにデータを入力していき、その内容をクエリパラメータの単語を基に検索します。
現在chromeランタイムV8を使用、スプレッドシートとは別の独立gasファイルでID指定で動かしています。
関係ないとは思いますが、念のためサービス→google sheets を追加しています。

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

ブラウザでAPIをたたくと、「スクリプトが完了しましたが、何も返されませんでした。」と表示されます。
ログにも「この実行に関するログはありません」、ステータス:「完了」と表示され、デバッグを行った際はコードを変えずとも色々な所でエラーが発生し、2行目や4行目、6行目などでエラーを吐いた挙句、数回同じコードでデバッグをしたらエラーを吐かなくなりました。

施行したURL

script.google.com/macros/s/(デプロイしたID)/exec?word="(検索ワード)"&need="explain"&callback=true
script.google.com/macros/s/(デプロイしたID)/exec?word=(検索ワード)&need=explain&callback=true
script.google.com/macros/s/(デプロイしたID)/exec?word=(検索ワード)&need=explain&callback="true"
script.google.com/macros/s/(デプロイしたID)/exec?word="(検索ワード)"&need="explain"
script.google.com/macros/s/(デプロイしたID)/exec?word="(検索ワード)"&?need="explain"
尚、検索ワードがスプレッドシート内に存在する事、URLのマクロIDが正しいことは確認しています。

該当コード(全文)

JavaScript

1function doGet(e) { 2 var sheets = SpreadsheetApp.openById("(シートID)"); 3 var sheet = sheets.getSheetByName("メインシート"); 4 var word = e.parameter.word; 5 var need = e.parameter.need; 6 var contents = []; 7 if (need = "all") { 8 return; 9 } else if(need = "word"){ 10 var column = 0; 11 next1(word,contents,sheets,sheet,colmun); 12 } else if(need = "yomi"){ 13 var column = 1; 14 next1(word,contents,sheets,sheet,colmun); 15 } else if(need = "level"){ 16 var column = 2; 17 next1(word,contents,sheets,sheet,colmun); 18 } else if (need = "genre"){ 19 var column = 3; 20 next1(word,contents,sheets,sheet,colmun); 21 }else if(need = "explain"){ 22 var column = 4; 23 next1(word,contents,sheets,sheet,colmun); 24 }else if (need = "tag"){ 25 var column = 5; 26 next1(word,contents,sheets,sheet,colmun); 27 } else { 28 contents = "error:501" 29 next1(word,contents,sheets,sheet,colmun); 30 } 31} 32function next1(word,contents,sheets,sheet,colmun) { 33 var textFinder = sheet.getRange("A1:F100").createTextFinder(word); 34 var cells = textFinder.findAll(); 35 var number = cells.length; 36 var number2 = cells.length; 37 for(0<number; number--;){ 38 var gyou = []; 39 gyou.unshift(cells[number].getA1Notation().slice(1,2)); 40 } 41 if (column){ 42 for(0<number; number2--;){ 43 var range = sheet.getrange(gyou[number2],column); 44 contents.unshift(range.getValue()); 45 } 46 var result = { 47 message: contents 48 } 49 var responseText; 50 51 var out = ContentService.createTextOutput(); 52 53 var callback = e.parameter.callback; 54 if (callback) { 55 responseText = callback + "(" + JSON.stringify(result) + ")"; 56 out.setMimeType(ContentService.MimeType.JAVASCRIPT); 57 out.setContent(responseText); 58 return out; 59 60 } else { 61 responseText = JSON.stringify(result); 62 out.setMimeType(ContentService.MimeType.JSON); 63 out.setContent(responseText); 64 return out; 65 } 66 } else{ 67 contents = "error:501" 68 var result = { 69 message: contents 70 } 71 var responseText; 72 73 var out = ContentService.createTextOutput(); 74 75 var callback = e.parameter.callback; 76 if (callback) { 77 responseText = callback + "(" + JSON.stringify(result) + ")"; 78 out.setMimeType(ContentService.MimeType.JAVASCRIPT); 79 out.setContent(responseText); 80 return out; 81 82 } else { 83 responseText = JSON.stringify(result); 84 out.setMimeType(ContentService.MimeType.JSON); 85 out.setContent(responseText); 86 return out; 87 } 88 } 89}

※見やすくするためJavaScriptと表記していますがGASです。
こちらもシートIDが正しいことは確認しています。
原因が分かる方いらっしゃれば宜しくお願いします。

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

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

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

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

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

guest

回答1

0

doGet() で戻り値(TextOutput)を返してください。(他にも問題があるかも)

投稿2022/03/08 12:40

k08045kk

総合スコア384

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

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

fukkatuno_f

2022/03/12 12:24

回答ありがとうございます。 試してみましたが結果変わらずでした...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問