はじめに
Appsheetを使用し、各アプリケーションの情報を一元化するアプリを作成しました。
その際に押下したレコードに紐づいたデータを別アプリで表示させる方法について調査しました。
以下のような構成
LINKTOROW()を使用した場合
今回遷移先の別アプリのデータ表示数が多くなる想定ですのでデータを絞り込んで表示させたいが、LINKTOROW()で遷移後にオートスクロールで一番上などに表示されるわけではなくそのデータが目立つように色が変わるだけでしたのでこちらの案は没に。
CONCATENATE()を使用し別アプリに遷移させる
URLを生成し、検索パラメーターのsearchTermに直接観覧したいデータのKey値を付与することでフィルターさせた状態で遷移させようとしました。
Targetの中身
CONCATENATE("https://www.appsheet.com/start/【URL生成値】?platform=desktop#viewStack[0][identifier][Type]=Control&viewStack[0][identifier][Name]=",ENCODEURL("在庫"),"&appName=",ENCODEURL([Appname]),"&searchTerm=",ENCODEURL([ID]))
うまくいったと思ったのですがこちらの遷移後にAPPGARALLYボタンを押下すると以下のエラーが発生しました。
どうやらディープリンクでアプリ遷移を行った際には、遷移元のデータを保持しているようで直接URLを生成しアプリ間遷移を行うとエラーが発生してしまうようです。
しかしAppsheet公式記事の [ディープリンクを手動で構築する]の中には検索のパラメーターがありませんでしたので別の方法を模索することに。
https://support.google.com/appsheet/answer/10106757?sjid=486925206027593892-AP
External: go to a websiteで別タブ表示させることによって回避する
発想を変えDo thisを"External: go to a website"に変更し別タブで表示させることによって遷移元という概念を無くしAPPGARALLYに遷移するボタンを押下した際のエラーが解消されることを確認しました。
まとめ
Appsheetを使用していると、デフォルトの機能に無いことを行おうとした際に今回のように問題が発生することがあります。
Appsheetの仕様に沿った範囲で行いたいことの実現方法を多角的に模索していく必要がありそうです。