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

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

ただいまの
回答率

90.49%

  • JavaScript

    20851questions

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

  • Google Apps Script

    1316questions

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

  • POST

    276questions

    POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

  • Slack

    233questions

    Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Slack Slash Commandのタイムアウトの対応策について

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 2,733

yosiaking

score 2

初めて質問をさせていただきます。
プログラミング初心者のため、ヘンテコな内容となっておりましたら申し訳ございません。。


■現在のステイタス
現在、
①SlackのSlashCommandを使ってリクエストを送り、
②GoogleAppsScriptコマンドでGoogleSpreadSheetから値を取得し、
③レスポンスされた値をSlack上に表示する
というシステムを作っております。


■問題
③でレスポンスが返ってくるまでの時間が3000msを超えて、以下のようなタイムアウトエラーが出てしまいます。(※Slackでは、レスポンスまでに3000msを超えるとタイムアウトが起こるそうです)

解決策としてはStack Overflowにそれらしいものがあったのですが…。

How to avoid slack command timeout error?
http://stackoverflow.com/questions/34896954/how-to-avoid-slack-command-timeout-error

こちら、頑張って訳しながら読んだのですが、内容がいまひとつ理解できず…どなたか解説をいただけませんでしょうか…?また、他にも良さそうな解決策がございましたら、ご指導をいただけますと幸いです。


■参考
参考までに、現在作っているWebアプリの概要を下記いたします。
(タイムアウトエラーがでなければ、問題なく機能することは確認済みです)

function doPost(e){
  var sheet = SpreadsheetApp.openById('スプレッドシートのID').getSheetByName('対象のシート');



  //①入力された案件IDの行を取得する関数
  function seachRow(){
    var rowCount = 2;

    for(var i=2;i<=sheet.getLastRow();i++){
      if(sheet.getRange(i,1).getValue() == e.parameter['text']){
        var resultRow = sheet.getRange(i,1).getValue();
        break;
      }else{
        rowCount += 1;
      }

    }

    return rowCount;
  }

    //②行を格納
    var row = seachRow();

    //③で格納した行のカラムA取得
    var A = sheet.getRange(row,3).getValue();

    //③で格納した行のカラムB取得
    var B = sheet.getRange(row,4).getValue(); 

    //③で格納した行のカラムC取得
    var C = sheet.getRange(row,7).getValue(); 

    //③で格納した行のカラムC取得
    var D = sheet.getRange(row,8).getValue(); 

    //Return
    return ContentService.createTextOutput(A+B+C+D);

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

タイムアウトへの対応策ということではないのですが、GASではAPIを呼ぶときのコストが大きいのでデータはまとめて取得したほうが速いです。

GASでSpreadsheetを操作する自分的ベストプラクティス

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/10 10:06

    ありがとうございます。参考にさせていただきます!

    キャンセル

  • 2016/02/10 14:12

    データをまとめて取得するようにしたところ、3000ms以内でレスポンスが返ってくるようになりました!!今後も、他のAPIを叩くときの参考にさせていただきます。ありがとうございました。

    追記
    3000msというのはslackのデフォルト値でしたので、APIの設定から編集できるようです。
    https://api.slack.com/slash-commands

    キャンセル

0

3000msというのはslackのデフォルト値でしたので、APIの設定から編集できるようです。
https://api.slack.com/slash-commands

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • JavaScript

    20851questions

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

  • Google Apps Script

    1316questions

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

  • POST

    276questions

    POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

  • Slack

    233questions

    Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。