2

配列内の文字列をサブ配列に分割し、それを元の配列にプッシュしようとして問題が発生しています。

エラーが発生します:

TypeError: オブジェクトに関数分割が見つかりません

これが私のコードです:

// Split chapter into scenes
for(c in files){
  var ID = files[c].getId();
  var chapter = DocumentApp.openById(ID);
  var text = chapter.getText();

  // Splits chapter into scenes and pushes them to scenes
  scenes.push(text.split("*"));

  // Splits scenes into n,s,b
  for(s in scenes){
    scenes[s] = scenes[s].split("~");
  }

  // Push in scene wordcount
  for(b in scenes){
    var wordCount = scene[b][2].split(" ");
    scenes[b].push(wordCount.length);
  }
}

スクリプトがインポートするチャプタ ドキュメントは、次のようにフォーマットされます。

シーンタイトル
~シーン
のまとめ ~ シーン

本体・・・そうですね。

*

銀河へ

そして、こうなる…

そして、こうなる、全てはあれこれだった。右。



おわり

これでおしまい。

そして、すべてがこれとあれだったということは、このようになります。右。終わり。

私は 2 つの配列を持っています。1 つchaptersはチャプター番号、名前、総単語数を保持し、次に特定のチャプターのすべてのシーンを保持するシーンを呼び出します (シーン名、要約、本文、単語数にもサブ配列されます)。章のタイトルは、DocsList 関数を使用して chapters 配列にインポートされます。

ドライブから章である特定のドキュメントのテキストを取得し、最初に文字 * を使用してシーンに分割します。

次に、完璧な世界では、オブジェクト配列内の各文字列を s サブ配列に分割してシーン配列をステップ実行し、文字 ~ を使用してサブ配列内のシーン番号、シーン名、およびシーン本体を分離し、その配列をにプッシュします元の配列。

だから、もし

scenes = ["The Beginning ~ In the beginning, blah blah blah ~ Body of the scene goes here", "The Beginning ~ In the beginning, blah blah blah ~ Body of the scene goes here"]

処理後、次のように変更されます。

scenes = [["The beginning", "In the beginning, blah blah blah", "Body of the scene goes here"], ["The beginning", "In the beginning, blah blah blah", "Body of the scene goes here"]]

問題は、チャプター ドキュメントをシーンに分割すると、シーンが文字列ではなくオブジェクトとして配列にプッシュされているように見えるため、シーン配列内の文字列をさらに分割することができなくなることです。

4

1 に答える 1

1

そのようなものはあなたが望むことをしますか?

function test(){ // replace this with the DocumentApp that gets your chapters
var chapter = "Scene Title~Summary of scene~Body of the scene...yeah.*To the Galaxy~And so it goes...~And so it goes like this that everything was this and that. Right.*The End~This is the end.~And so it goes like this that everything was this and that. Right. The end."
Logger.log(splitText(chapter))
}


function splitText(chapter){
  var temp = []
  var text = []
  var scenes=[]
  var wordCount
  // Splits chapter into scenes and pushes them to scenes
  temp=(chapter.split("*"));

  for(t in temp){
    text = temp[t].split("~")
    Logger.log(t+'  '+text)
    wordCount = temp[t].split(" ").length
    text.push(wordCount)
    scenes.push(text)
    }
 return scenes  
}

ログ結果:

0  Scene Title,Summary of scene,Body of the scene...yeah.
1  To the Galaxy,And so it goes...,And so it goes like this that everything was this and that. Right.
2  The End,This is the end.,And so it goes like this that everything was this and that. Right. The end.
[[Scene Title, Summary of scene, Body of the scene...yeah., 7.0], [To the Galaxy, And so it goes..., And so it goes like this that everything was this and that. Right., 18.0], [The End, This is the end., And so it goes like this that everything was this and that. Right. The end., 19.0]]
于 2013-03-01T06:28:19.017 に答える