質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

ドキュメント

ドキュメントは、IT用語では、ソフトウェアやハードウェアに関する情報であり、意図された目的、機能性、メインテナンスを含みます。ドキュメントは、多くの様々なフォームとフォーマットに存在しますが、その目的は常に教育することにあります。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

5758閲覧

GASでスプレッドシートからドキュメントに改行して書き出すコーディングを知りたい

KA.S

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

ドキュメント

ドキュメントは、IT用語では、ソフトウェアやハードウェアに関する情報であり、意図された目的、機能性、メインテナンスを含みます。ドキュメントは、多くの様々なフォームとフォーマットに存在しますが、その目的は常に教育することにあります。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2020/08/22 11:47

編集2020/08/22 12:54

スプレッドシートからドキュメントに改行して書き出すコーディングを知りたい

すごく初歩的なことで恐縮ですが。。。
下記ツールをGASで実装したいのですが、どうコーディングすればよいかわからず、
質問させていただきました。

【実装したいこと】
・スプレッドシートのセル内の文字列をGoogleドキュメントに書き出したい。
・ドキュメント上に下記のように書き出したい。

[ドキュメントタイトル]
[本文]
「スプレッドシートのA列2行」:「スプレッドシートのB列2行」
(改行)
「スプレッドシートのA列3行」:「スプレッドシートのB列3行」
(改行)
「スプレッドシートのA列4行」:「スプレッドシートのB列4行」
(改行)


発生している問題・エラーメッセージ

・下記ソースコードを実装すると、「スプレッドシートB列の最終行」のみドキュメントの1行目に書き出される。

該当のソースコード

function makeDocuments() { //スプレッドシート、シート、行数を取得 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); var count = sheet.getLastRow(); var Name = spreadsheet.getName(); //ドキュメントを作成 var document = DocumentApp.create(Name); //項目タイトルを覗く2行目~最終行について、ドキュメントを作成する for(i = 2; i <= count; i++){ //タイトル、本文を取得 var body = sheet.getRange("A"+i).getValue(); var body = sheet.getRange("B"+i).getValue(); //本文を書き込む document.getBody().setText(body); } //ドキュメントを格納するフォルダを取得(指定しない場合はマイドライブ直下に作成される)  var targetFolder = DriveApp.getFolderById("格納するドライブURL"); //指定したフォルダに所属(移動)させる var docFile = DriveApp.getFileById(document.getId()); targetFolder.addFile(docFile); }

試したこと

・「GAS 改行」で色々調べると「\nを使用する」という内容につながるのですが、
ソースコードにどう落とし込んでコーディングすればよいかがわからず、、、

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

あなたが参考にしたサイト(おそらく【GAS】GoogleスプレッドシートのデータをGoogleドキュメント化する - Qiita)のコードは、「A列の内容をファイル名として複数のファイルを作り、それぞれ対応するB列の内容を書き込む」というコードなので、そのまま使ってはだめですね。

GAS

1 var contents; 2 for (var i = 2; i <= count; i++){ 3 var a = sheet.getRange("A" + i).getValue(); 4 var b = sheet.getRange("B" + i).getValue(); 5 contents += a + ":" + b + "\n"; 6 } 7 document.getBody().setText(contents);

getValuesで指定した範囲を一気に取得して処理するほうが高速なのですが、提示されたコードを活かすためにそのままgetValueで書いています。

投稿2020/08/22 13:55

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KA.S

2020/10/15 04:52

お返事がだいぶ遅くなり申し訳ございません。。 上記ご教示いただきありがとうございます。無事解決致しました。。。!
guest

0

下記ソースコードを実装すると、「スプレッドシートB列の最終行」のみドキュメントの1行目に書き出される。

これは下記の書き方が原因です。

GAS

1var body = sheet.getRange("A"+i).getValue(); 2var body = sheet.getRange("B"+i).getValue();

var body = を2回行っているため、都度bodyが初期化されて最終的にB列の最後の値が入ってしまいます。
目的の挙動にするには+=でA列とB列の内容を連結させた上で、B列の文字列末尾に\nを連結すれば改行も行えるはずです。

GAS

1function makeDocuments() { 2 //スプレッドシート、シート、行数を取得 3 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4 var sheet = spreadsheet.getActiveSheet(); 5 var count = sheet.getLastRow(); 6 var Name = spreadsheet.getName(); 7 //ドキュメントを作成 8 var document = DocumentApp.create(Name); 9 10 // ここでbodyを初期化 11 var body = ''; 12 13 //項目タイトルを覗く2行目~最終行について、ドキュメントを作成する 14 for(i = 2; i <= count; i++){ 15 //タイトル、本文を取得 16 //var body = sheet.getRange("A"+i).getValue(); 17 //var body = sheet.getRange("B"+i).getValue(); 18 19 // A列の値を取得 20 body += sheet.getRange("A"+i).getValue(); 21 // ':'で区切った後にB列、さらに最後に改行を追加 22 body += ':' + sheet.getRange("B"+i).getValue() + '\n'; 23 24 } 25 26 //本文を書き込む 27 document.getBody().setText(body); 28 29 //ドキュメントを格納するフォルダを取得(指定しない場合はマイドライブ直下に作成される) 30  var targetFolder = DriveApp.getFolderById("格納するドライブURL"); 31 32 //指定したフォルダに所属(移動)させる 33 var docFile = DriveApp.getFileById(document.getId()); 34 targetFolder.addFile(docFile); 35}

投稿2020/08/22 13:49

nekoniki

総合スコア2411

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KA.S

2020/10/15 04:52

お返事がだいぶ遅くなり申し訳ございません。。 上記ご教示いただきありがとうございます。無事解決致しました。。。!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問