【プリントクリエイター】帳票保存を自動化したい

お世話になっております。

掲題の件、プロセス変更でプリントクリエイターの帳票保存を自動化したいと考えております。

 

7/14以前まではプロセス変更で、帳票の自動保存は実装できていたのですが、

プリントクリエイターのアップデートがあったのか「帳票名選択」のセレクトボックスや「出力」「保存」ボタンのクラス名が変更になり

帳票の自動保存がエラーとなってしまいました。

 

変更になったクラス名に合わせて、以下の通りコードを修正して

「保存」ボタンの疑似クリック→「ファイルの保存に成功しました」というメッセージは表示されますが、添付ファイルフィールドに帳票が保存されておりません。

原因は「保存先フィールド」の値が表面上は変更されているが、内部的には変更されていないためだと思われます。

==========================================================

$(‘.pcreator-attachment-field-select option[value=attachment]’).prop(‘selected’);

==========================================================

上記の”attachment”は添付フィールドのフィールドコードです。

 

セレクトボックスに対してjqueryで値を設定する際、上記以外の記載方法などはありますでしょうか?

 

大変お手数ではございますが、アドバイスなどいただければ幸いです。

こんにちは、自動保存jsを作成しているトヨクモ株式会社の開発本部の齊藤です。プリントクリエイターと自動保存js(https://pc.kintoneapp.com/user/auto_save.html)を利用しているkintoneアプリで、y-kishi様の作成したjavascriptで自動保存jsの処理をトリガーしたい、ということでよろしいでしょうか。

まず、上記の私の認識は正しいでしょうか。それを仮定して以下回答します。

結論から言うと、chromiumdriverなどのヘッドレスブラウザを利用して手動でのブラウザ操作をエミュレートすると確実かなと思います。

以下、現状のコードでなぜ動かないかの説明をいたします。

> 原因は「保存先フィールド」の値が表面上は変更されているが、内部的には変更されていないためだと思われます。

これは、y-kishi様のご認識の通りです。7/14に新しいversionの自動保存jsにアップデートを行ったのですが、その際に今までのコードをReact(https://reactjs.org/)(正確には、ClojureScriptのReactラッパーのReagent)で書き直すということを行いました。html要素自体の状態とjavascript側の状態は分離されているため、html要素の状態をjavascriptから操作してもjavascriptの状態は変更されません。実際の自動保存jsの保存などの機能に利用されるのはjavascript側の状態のため、うまく動かなくなってしまった、ということのはずです。現在、select.pcreator-attachment-field-selectのonchangeイベントにトリガーされたハンドラが自動保存jsの内部状態を変更する、ということを行っているので、同じonchangeイベントをトリガーすればうまく動くはずなので、私の方でも検証してみました。https://stackoverflow.com/questions/23892547/what-is-the-best-way-to-trigger-onchange-event-in-react-js こちらを参考にして、Object.getOwnPropertyDescripterで取得したセッターを利用して、 dispatchEvent(new Event(‘change’, {bubbles: true})) というコードをコンソールから走らせてみたのですが、うまく行かないようです。これはClojureScriptのラッパーReagentを利用しているせいかもしれないのですが、そこまで調査できていません。このようなハックもこちらのjsのコードがあるからできる話で、y-kishi様がご自身で試行錯誤されるのにも限界がありますから、この方向性ではなく、ヘッドレスブラウザを用いて自動化することをおすすめいたします。

齊藤 様

 

詳細な情報をいただきありがとうございます。

こちらのjavasciptでhtml要素を操作しても正しく動作しない旨、承知いたしました。

 

ヘッドレスブラウザを用いて自動化とのことで、これから検証を行ってみます。

進捗についてはまた改めてご連絡させていただきたいと思います。