Google Blocklyのブロックを保存、読み込み
Google Blocklyを基本として作られた、scratch3.0では「保存、読み込み」ができます。Google Blocklyでも「ワークスペースに置いたブロックの保存、読み込み」ができないか探ってみました。
https://ytakata69.github.io/blockly-processing/
のコードを読んで理解しました。
Google Blocklyのワークスペースに置いたブロックの取得
var xml = Blockly.Xml.workspaceToDom(workspace);
var myBlockXml = Blockly.Xml.domToText(xml);
myBlockXml がワークスペースに置いてあるブロックの値になります。
↓値の例
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="block_web_program_start" id="pz]#L40/)?}~AsE3`*6P" x="10" y="10">
<next>
<block type="block_web_text" id="Y,]0_5:qHw7FdY@Ulr9d">
<field name="my_web_text">ここに記入</field>
</block>
</next>
</block>
</xml>
置かれているブロックの種類と座標が、xmlで表記されています。
この myBlockXml の値をファイルに保存してください。
Google Blocklyのブロックをワークスペースに再構築
保存してあるブロックのxmlデータを読み込んで、myBlockXmlに入れます。
ワークスペースを初期化してから、ブロックを再構築します。
// ブロック再構築
var xml = Blockly.Xml.textToDom(myBlockXml);
workspace.clear();
Blockly.Xml.domToWorkspace(xml, workspace);
ファイル読み込みについては、下記のページを参考にしてください。
https://qiita.com/kerupani129/items/99fd7a768538fcd33420