menachav
@menachav (mena ..)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[LINEbot] 時間と予定の要素だけを抽出したい

解決したいこと

Lineの出力画面に[]と""が出ている

TypeScriptでGoogleCalendarAPIを用いた予定を取得するbotを開発しています.予定を表示する際に問題が発生しました.

解決方法を教えて下さい。

発生している問題

スクリーンショット 2022-01-31 17.05.03.png
このように[ ]と""が出てしまいます.

ソースコード 

予定を表示する処理

// Load the Package
import { TextMessage } from "@line/bot-sdk";
import moment from "moment";

// Load the module
import { ListEvents } from "../../calendar/ListEvents";
import { ListEventType } from "../../calendar/types/ListEventType";

export const SchduleMessage = async (): Promise<TextMessage> => {
  // 予定の取得
  const schdule: any = await ListEvents();

  const data: ListEventType = schdule;

  return {
    type: "text",
    text: JSON.stringify(
      data.map((res, i: number) => {
        const start = moment(res.start?.dateTime);
        // 日付のformat
        const formatStart = start.format("MM月DD日HH時mm分");

        const message = `${formatStart}-${res.summary}`;

        return message;
      }),
      null,
      2
    ),
  };
};

calendarの型

export type ListEventType = [
  {
    kind: string;
    etag: string;
    id: string;
    status: string;
    htmlLink: string;
    created: Date;
    updated: Date;
    summary: string;
    creator: { email: string; self: boolean };
    organizer: { email: string; self: boolean };
    start: { dateTime: Date; timeZone: string };
    end: { dateTime: Date; timeZone: string };
    iCalUID: string;
    sequence: number;
    reminders: { useDefault: boolean };
    eventType: string;
  }
];

summaryとstart.dateTimeの要素を抽出するにはどうすればよいでしょうか.
よろしければご教授お願いします.

0

1Answer

おそらく、textプロパティにJSONの形をした文字列を渡しているのが原因だと思います。
以下のような形で事前に送信したい形の文字列を用意して、その文字列を渡してうまくいかないでしょうか?

var message = ""

data.forEach(data => {
    var start = moment(data.start?.dateTime);
    var formatStart = start.format("MM月DD日HH時mm分");
    var addMessage = `${formatStart}-${data.summary}`;
    
    if (message == "") {
        message = addMessage;
    }
    else{
        message += "\n" + addMessage;
    }
});


return {
    type: "text",
    text: message,
};
1Like

Comments

  1. @menachav

    Questioner

    無事に実装することができました!!
    JSONの形で渡しているのが良くなかったですね!
    ありがとうございました!!

Your answer might help someone💌