XMLのスクレイピングをGASでしてます
XmlからXmlServiceを使用して取得したくコードを書いています。
取得したいXML
途中まで取得できましたが、
子要素でエラーになってしまいました。
ItemSentenceの子にColumnが2つあって一つ目は取得できて二つ目が取得できず、
それぞれに定義して取得したいですが、エラーになってしまいました。
実現したいこと
最終はスプレッドシートにXMLデータを保存
することです。
下記の表のようにするのが目標です
ArticleCaption | ArticleTitle | ItemTitle | Sentence |
---|---|---|---|
(業務) | 第三条 | 司法書士は、この法律の定めるところにより、他人の依頼を受けて、次に掲げる事務を行うことを業とする。 | |
一 | 登記又は供託に関する手続について代理すること。 |
<ItemSentence>の子の
<Column Num="1">
<Column Num="2">
をそれぞれ定義して取得したいです。
繰り返し処理の場合でも、エラーになってしまいます。
発生している問題・エラーメッセージ
エラー TypeError: itemSentence.getElementByNum is not a function
該当のソースコード
function parseXml() { let url = 'https://elaws.e-gov.go.jp/api/1/lawdata/昭和二十五年法律第百九十七号'; let xml = UrlFetchApp.fetch(url).getContentText(); let document = XmlService.parse(xml); let root = document.getRootElement(); const applData = root.getChild("ApplData"); const lawFullText = applData.getChild("LawFullText"); const law = lawFullText.getChild("Law"); const lawBody = law.getChild("LawBody"); const mainProvision = lawBody.getChild("MainProvision"); const chapter = mainProvision.getChild("Chapter"); const articles = chapter.getChildren("Article"); articles.forEach(article => { const itemtitle = item.getChild("ItemTitle"); const itemSentence = item.getChild("ItemSentence"); console.log(itemtitle.getText()); const column = itemSentence.getChild("Column"); if (column == null){ const sentence = itemSentence.getChild("Sentence"); console.log(sentence.getText()); }else{ const column1 = itemSentence.getElementByNum('1')←●エラーの箇所●Num=”1”を取得したい const sentence = column1.getChild("Sentence"); console.log(sentence.getText());} } }); }
XML
1<Article Num="1"> 2<ArticleCaption>(施行期日)</ArticleCaption> 3<ArticleTitle>第一条</ArticleTitle> 4<Paragraph Num="1"> 5<ParagraphNum/> 6<ParagraphSentence> 7<Sentence Function="main" Num="1" WritingMode="vertical">この法律は、平成十五年四月一日から施行する。</Sentence> 8<Sentence Function="proviso" Num="2" WritingMode="vertical">ただし、次の各号に掲げる規定は、当該各号に定める日から施行する。</Sentence> 9</ParagraphSentence> 10<Item Num="1"> 11<ItemTitle>一</ItemTitle> 12<ItemSentence> 13<Sentence Num="1" WritingMode="vertical">略</Sentence> 14</ItemSentence> 15</Item> 16<Item Num="2"> 17<ItemTitle>二</ItemTitle> 18<ItemSentence> 19<Column Num="1">←●ここ● 20<Sentence Num="1" WritingMode="vertical">附則第五条及び第九条の規定</Sentence> 21</Column> 22<Column Num="2">←●ここ● 23<Sentence Num="1" WritingMode="vertical">公布の日</Sentence> 24</Column> 25</ItemSentence> 26</Item> 27</Paragraph> 28</Article>
試したこと
const hoge = document.querySelectorAll('.hoge')
こちらも試しましたがエラー出ました。
初歩的なミスかもしれません。
どなたかお教えいただけないでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー