52634


山手線が遅延していたらslackに投稿するスクリプトを作成しましたが、上手くslackに投稿できないです。実行すると次のようなエラーが表示されます。

**エラーメッセージ**

[code]

    戻り値が無効です。（行 8、ファイル「Slack」）表示しない
    
[/code]

下記のように出力して欲しいです。  
お手数ですが、ご確認お願い致します。

**期待する出力結果**

[code]

    平常運転
    現在､事故･遅延に関する情報はありません。
    
[/code]

**ソースコード**

[code]

    // 日付取得、フォーマット整形
    var currentDate = new Date();
    var weekday = currentDate.getDay();
    var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'M月d日 HH時mm分');
    
    // 祝日は実行させない
    if (weekday == 0 || weekday == 6) {
      return;
    }
    var calendar = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
    if (calendar.getEventsForDay(currentDate, {max: 1}).length > 0) {
      return;
    }
    
    // URLから要素を指定し、タグ要素を取得する
    var yahoo = "https://transit.yahoo.co.jp/traininfo/detail/21/0/";
    var response = UrlFetchApp.fetch(yahoo);
    var myRegexp_line = /<<dd class="normal"　trouble">([\s\S]*?)<\/div>/i;
    var line_html = myRegexp_line.exec(response.getContentText());
    var line_list = line_html[1];
    
    // 文字の整形
    // replaceでline_listをゴリゴリ整形し変数、lineに...(もっと綺麗に書きたかった。。) 
    var line_base = line_list.replace(/\n|(運転状況|列車遅延|路線|詳細)|<td><span.*<\/td>|<.?th>|<tr>|<.?table>/g, "");
    var line_top_del = line_base.replace("状況", "");
    var line_td_del_1 = line_top_del.replace(/<td>/g, "\n");
    var line_span_del = line_td_del_1.replace(/<\/span>|<\/a>/g, "");
    var line_a_del = line_span_del.replace(/<a href=".*\/">/g,"");
    var line_td_del_2 = line_a_del.replace(/<\/td>/g, "\n" );
    var line = line_td_del_2.replace(/<\/tr>/g, "━─━─━─━─━─━─━─━");
    
    if(line !== '事故・遅延情報はありません'){
    
      // slackに投稿
      function postMessage(message, hookPoint){
        var payload = {
          "text": message,
          "channelId": '#information',
          "userName": 'train-info',
          "icon_emoji": ':train:'
        }
        var options = {
          "method": "POST",
          "payload": JSON.stringify(payload),
          "headers": {
          "Content-type": "application/json",
          }
        }
        var response = UrlFetchApp.fetch(hookPoint, options);
    
        if (response.getResponseCode() == 200) {
          return response;
        }
          return false;
      }
        postMessage("\n" + "◆関東遅延情報 " + date + "\n" + yahoo + "\n" + line,'メモしたWebhookURL');
    }else{
        postMessage("\n" + "◆関東遅延情報 " + date + "\n" + "○　事故・遅延情報はありません。" + "\n"+ yahoo,'メモしたWebhookURL');
    }
    }catch(e){
      result = "エラーの内容:" + e;
        Logger.log(result);
        postMessage("◆Script実行エラーです。");
     }
    }
    
[/code]


CC BY-SA 4.0
2019-02-06T10:05:02.320
52593
2019-02-08T01:58:27.953
2019-02-07T01:30:03.533
3060
18859
question
google-apps-script slack
山手線の電車遅延したらSlackに投稿するスクリプト


コメント書けないのでこちらで確認したいんですが、8 行目は以下の処理ですね。

[code]

    if (weekday == 0 || weekday == 6) {
      return;  ←←←←ここ
    }
    
[/code]

GAS は詳しくないんですが、何も返さない return は仕様として許容されているのでしょうか？


CC BY-SA 4.0
2019-02-07T09:32:29.587
52626
2019-02-07T09:32:29.587
9592
52593
answer


記載されたコードをGASのスクリプトエディタに貼り付けて保存すると、エラーメッセージが再現しました。  
（ファイル名はSlack.gsですかね。）

> 実行すると次のようなエラーが表示されます。

こちらは「保存すると」という事でよろしいでしょうか？

上記であっているとして、回答いたします。  
GASは関数を実行するので、関数化する事で対応が可能です。  
具体的には以下のようにすればよいかと思います。

[code]

    function hoge(){
      // 日付取得、フォーマット整形
      var currentDate = new Date();
    
      // 以下略
    }
    
[/code]

尚、記載されているコードは一部抜粋のようで、唐突にcatch句が出ているためそこで構文エラーとなります。  
動作させるためにはその辺りの修正が必要ですが、本質問とはズレますので割愛いたします。


CC BY-SA 4.0
2019-02-08T01:58:27.953
52634
2019-02-08T01:58:27.953
13022
52593
answer