0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

スプレッドシートでコピーしたものをJavaScriptで配列にする

Last updated at Posted at 2024-07-25

スプレッドシート(Excelや、Googleスプレッドシート)で範囲をコピーし、他のアプリで貼り付ける際に、貼り付け先によってはTSV(Tab-Separated Values)の形式で貼り付けられます。

TSVでは、タブ文字は1つ右のセルへの遷移、改行文字は1行下への遷移を意味します。セル内にタブ文字や改行文字を含む場合は、セルの文字列を「"」(ダブルクォーテーションマーク)で挟みます。セル内にタブ文字と「"」、または改行文字と「"」を同時に含む場合は、文字列内の「"」は「""」に置換されます。

今回、TSVをJavaScriptで配列にパースするコードが見つからなかったので、自作してみました。

const TSV={}
TSV.parse=function(tsv){
	const result=[[``]]
	let row=0
	let column=0

	const regExp=/^\t|^\n|^"([^"]|"")*"|^[^\t\n]*/g
	while(tsv){
		switch(tsv[0]){
			case`\t`:
			result[row][++column]=``
			break

			case`\n`:
			column=0
			result[++row]=[``]
			break

			case`"`:
			let[extracted1]=tsv.match(regExp)
			extracted1=extracted1.replace(/^"|"$/g,``)
			extracted1=extracted1.replaceAll(`""`,`"`)
			result[row][column]=extracted1
			break

			default:
			let[extracted2]=tsv.match(regExp)
			result[row][column]=extracted2
		}
		tsv=tsv.replace(regExp,``)
	}
	return result
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?