2017-11-30 4 views
0

スタックにルートカードと他のカードが1枚あります。私はデータ検証をしています。ドロップダウンボックスにファイル値が選択されていない場合は、これがエラーハンドラで、新しいエラーカードを作成します。元の関数はエラーをスローし、catchはエラーハンドラを呼び出します。エラーが発生した場合は何もしませんが、エラーメッセージを記録します。実行記録、ヘッダー、セクションに新しいカードが作成されているようですが、表示されません。私は実行記録に誤りは見られません。すべてが成功しますが、新しいカードはありません。カードがナビゲーションスタックに押し込まれない理由は何ですか?限界はありますか?

function error(e){ 
try{ 
// create new card, header, and section 
var header = CardService.newCardHeader().setTitle('Error') 
    .setImageUrl('http://www.pvhc.net/img55/waclmgwigxuizcqbxjdx.jpg') 
    .setImageStyle(CardService.ImageStyle.SQUARE); 

var section = CardService.newCardSection() 
    .setHeader('<b>Error Message:</b>') 
    .addWidget(CardService.newTextParagraph().setText(e)); 

var card = CardService.newCardBuilder() 
    .setHeader(header).addSection(section).build(); 

// Create Nav object 
var nav = CardService.newNavigation().pushCard(card); 

// Check if my function is being called and the error message is correct. 
Logger.log(e); 

// push card onto stack. 
return CardService.newActionResponseBuilder().setNavigation(nav); 
}catch(e){Logger.log(e.message);} 
} 

更新:私のcatch文では、私は誤差関数を呼び出す前にreturn文を持っていませんでした。今私はランタイムエラーが表示されます:'マークアップの必須フィールドがありません:'。理由は分かりません。

答えて

2

私はもともとエラーハンドラを呼び出すときに 'return'を含めませんでしたが、返すときにアクションレスポンスビルダーをビルドしませんでした。

元の文:。 リターンCardService.newActionResponseBuilder()setNavigation(NAV);

訂正: リターンCardService.newActionResponseBuilder()setNavigation(NAV).build();。

これで機能します。

4

カードを作成することを忘れないでください。あなたはカードを作る必要があります。

return CardService.newActionResponseBuilder().setNavigation(nav).build(); 
関連する問題