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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

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

Q&A

解決済

2回答

473閲覧

GoogleSheetsの列セルの文字列を加工して繋げたい

tamamo11

総合スコア7

Google Apps Script

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

0グッド

0クリップ

投稿2020/03/02 13:47

例えばA列にA1:A3にそれぞれ文字列がはいってるとして
その文字列一つずつ""をつけて全部結合して別のセルに転記したいです。

aaa
bbb
ccc

こんなに風に入ってたら
どこかのセルに"aaa" or "bbb" or "ccc"と入力したい。【この質問のゴール】

getRangeとgetValuesで配列にするまではうまくいったのですが
ダブルクオーテーションがうまく付け足すことができていません。
ソースコードは職場にあるので全部はだせないんですが
[aaa,bbb,ccc]と入った配列を変数arrとして

""をつける作業のあと
新しいarr.join(" or ")をつけるってかんじだと思うんですが

ダブルクォーテーションつけるのにforループで

Google

1コード 2for(var i = 0; i < arr.length; i++) { 3 arr[i] = \" + arr[i] + \"; 4} 5

なんかこんなの書いた気がするんですがうまくいかなった記憶があります。
GAS使わない解決策でも構いませんが一応勉強がてらにやってるのでコードで解決したいです。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

下記関数を作ったうえで、

javascript

1const q244685 = () => `"${SpreadsheetApp.getActiveSheet().getRange(1,1,3,1).getValues().map(e=>e[0]).join('" or "')}"`;

書き込みたいセルに =q244685() と書いてください

何かを間に挟む処理を解決するためのアルゴリズムは join 一択です。

投稿2020/03/04 14:11

papinianus

総合スコア12705

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

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

0

ベストアンサー

次のようなサンプルスクリプトはいかがでしょうか。

サンプルスクリプト1

このサンプルではご質問にあるvar arr = ["aaa","bbb","ccc"]とforループ、join()を使用しました。

javascript

1var arr = ["aaa","bbb","ccc"]; 2for(var i = 0; i < arr.length; i++) { 3 arr[i] = "\"" + arr[i] + "\""; // 変更 4} 5var res = arr.join(" or "); // 追加 6SpreadsheetApp.getActiveSheet().getRange("A4").setValue(res); // 追加
  • \"で既にダブルコーテーションはエスケープされていますので、これをダブルコーテーションで囲み文字列として加算します。

サンプルスクリプト2

別案として、このサンプルではaaa, bbb, cccがアクティブシートのセル"A1:A3"にあると仮定し、ここから値を取得して加工し、結果である"aaa" or "bbb" or "ccc"をセル"A4"に入れます。

javascript

1const sheet = SpreadsheetApp.getActiveSheet(); 2const values = sheet.getRange("A1:A3").getValues(); 3const res = values.reduce((s, [r], i, a) => s += `"${r}"${i != a.length - 1 ? ' or ' : ''}`, ""); 4sheet.getRange("A4").setValue(res);

注意点

  • 上記のサンプルスクリプト2をテストするにはV8を有効にしてください。

投稿2020/03/03 03:07

kisojin

総合スコア899

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問