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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Google Apps Script

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

Q&A

1回答

2370閲覧

GASで指定した範囲のセルの結果を改行したい

CHOCOKen

総合スコア9

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Google Apps Script

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

0グッド

0クリップ

投稿2021/07/08 02:54

編集2021/07/08 04:34

前提・実現したいこと

スプレッドシート内の指定した範囲のデータを改行して出力したい。
最終的には上記の内容をDiscordに通知したい(セルの方の形のまま出力(表示したい))
イメージ説明

イメージ説明

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

指定した範囲のセルの取得には成功したが改行の仕方がわからない

該当のソースコード

function myFunction() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet();    //セルA1:A3を取得 var range = sheet.getRange(1, 1, 4, 4); //getValue() //Logger.log(range.getValue()); //getValues() Logger.log(range.getValues()); }

試したこと

改行のコードを配列の中に入れてみたがエラーになった

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

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

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

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

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

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

itagagaki

2021/07/08 03:00

Discordに通知するデータに改行を入れたいということですか? Discordに通知するコードはどうなっているんですか?
CHOCOKen

2021/07/08 03:08

>Discordに通知するデータに改行を入れたいということですか? はい!そうですね。 まず改行の入れ方がわからないのでまずはGAS内で改行できるかどうかです・・・ >Discordに通知するコードはどうなっているんですか?  Discordに通知するコードは下記のコードで行おうと思っています。 function discord(message) { const url = 'URL'; const token = 'トークン名'; const channel = '#test'; const text = message; const username = 'bot'; const parse = 'full'; const method = 'post'; const payload = { 'token' : token, 'channel' : channel, "content" : text, 'username' : username, 'parse' : parse, }; const params = { 'method' : method, 'payload' : payload, 'muteHttpExceptions': true }; response = UrlFetchApp.fetch(url, params); }
itagagaki

2021/07/08 03:29

データは二次元配列ですから、これをcontentとして送るにはどうにかしてシリアライズしないといけないと思いますが、それはどのように考えているのですか?
CHOCOKen

2021/07/08 04:15

ちょっとまだそこまでは考えれていません・・・ 知識がある方にご助力をって感じです。
CHOCOKen

2021/07/08 04:25

JSON.stringify()というのを使う感じでしょうか?
guest

回答1

0

やりたいことが今一つ不明確ですが、たとえばrangeの各要素に改行を加えたいなら、こんな感じです。

GAS

1 var values = range.getValues(); 2 for (var i = 0; i < values.length; i++) { 3 values[i] = values[i].map(value => value + "\n"); 4 } 5 console.log(values);

コメントを受けて追記します。

[ [ 'name', 'red', 'blue', 'green' ], [ 'A', 1, 5, 10 ], [ 'B', 0, 5, 0 ], [ 'C', 10, 10, 0 ] ]

のようになっているvalues

name red blue green A 1 5 10 B 0 5 0 C 10 10 0

のような文字列にしたいのですね。簡単です。

GAS

1 var values = range.getValues(); 2 var serialized = ""; 3 for (var i = 0; i < values.length; i++) { 4 serialized += values[i].join(" ") + "\n"; 5 } 6 console.log(serialized);

スペースで整形して等幅フォントできれいに表として表示されるような文字列にしたいのなら

var values = range.getValues(); var serialized = ""; for (var i = 0; i < values.length; i++) { for (var j = 0; j < values[i].length; j++) { serialized += Utilities.formatString("%8s", values[i][j].toString()); } serialized += "\n"; } console.log(serialized);

投稿2021/07/08 11:23

編集2021/07/09 08:47
itagagaki

総合スコア8402

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

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

CHOCOKen

2021/07/09 01:36 編集

ご回答ありがとうございます。 現在 //3. 指定するセルの範囲(A1~G16)を取得 const range = spreadSheet.getRange("シート名!A1:G16").getValues(); //4. 値を取得する const TEST = range; var aa = range[0][0] + " " + range[0][1] + " " + range[0][2] + " " + range[0][3]+ " " + range[0][4] + " " + range[0][5] + " " + range[0][6] + '\n' + range[1][0] + " " + range[1][1] + " " + range[1][2] + " " + range[1][3] + " " + range[1][4] + " " + range[1][5] + " " + range[1][6] + '\n' …続く //ログに出力 Logger.log(aa); const message = aa //送信するメッセージ という感じで考えておりました・・・ itagakiさんのようなコードの方が良さそうですね。 ちなみになのですがセルA1の行を基準にB1~の行をA1の行のように整形したいのですがどのようにすればよいか教えていただけないでしょうか? 注文多くてすみません・・・
CHOCOKen

2021/07/09 08:13 編集

ありがとうございます。 無事2次元配列を表にすることが出来ました。 ただ整形をnameの行に合わせてA1の行~の数字をきれいに縦で表示させたいのですけど GAS単体ではむずかしそうですね・・・ 例  name 収入 支出 合計金額 残高 Aさん 10  5      100 15 Bさん 10   5      20    7 Cさん 8    5     20   7 Dさん 9    5     8    7 のようにスプレッドシートの値を整形したかったのですが 実際は値自体全て左に寄ってしまって一番上の欄に沿った値が下に続かなくそれをGAS内で整形は難しいでしょうか?
itagagaki

2021/07/09 08:37

スペースで整形したいということですか? どこにどういう手段で表示する予定なのかわかりませんがタブは使えないのですか?
itagagaki

2021/07/09 08:49

スペースで整形するコードを追加しておきました。 あとは自分でやってくださいね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問