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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

1回答

1702閲覧

スプレッドシートの文字列から複数、一度に置換するには

hide65

総合スコア2

Google スプレッドシート

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

0クリップ

投稿2020/08/04 00:18

前提・実現したいこと

現在、スプレッドシート上の文字列から削除したい文字を別のシートに変換表を作成してその通りに一括で置換させたいと思っています。
replaceメソッドを使用したのですが、削除したい文字が大量に複数あるため入力に時間がかかってしまいました。簡単にできる方法はないでしょうか?

試したこと

function myFunction(){
var str = "C:C";
str = str.replace("/バリ,BARI/g"," ");
console.log(str);
}

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

GoogleAppScript からスプレッドシートAPIでいじっているという認識であっていますか?

spreadsheets.values.update

を複数回実行するのではなく

spreadsheets.values.batchUpdate

を使うと一括で変更できて高速になります。

サンプル Google Sheets APIでセルの値を書き込む方法 - Qiita

投稿2020/08/04 00:26

anozon

総合スコア662

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

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

hide65

2020/08/04 01:05

APIではなく、マクロに直接書き込んでいます。 いろいろ検索して試したのですが、うまくいきません。 下記のような記述だと、シートが変換表と変換元と変換後の3つシートが欲しくなるので、出来たらマクロを実行したら削除されるようにしたいと思っています。 function multiSubstitute() { var dictSheetName = "dict"; var inputSheetName = "input"; var outputSheetName = "output"; //シート取得 var dictSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dictSheetName); var inputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(inputSheetName); var outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(outputSheetName); //dict(辞書)シートから連想配列を作成 var dictRange = dictSheet.getRange(2,1,7,2);// 2行目, 1列目(A), 7行目, 2列目(B) =A2:B7 var dictValues = dictRange.getValues(); var imDict = {}; for each(var val in dictValues){ imDict[val[0]] = val[1]; } //inputシートの入力を取得 var inputRange = inputSheet.getRange(1,2,2);// 1行目, 2列目(B), 2行目, 省略(列に変化がない) =B1:B2 var inputValues = inputRange.getValues(); var name = String(inputValues[0]);//名前 var keysString = String(inputValues[1]);//キーが入った文字列 とりあえずStringにキャスト if(name == "" || keysString == ""){ return; } //cookie用にurlencodeされた文字列をそのまま貼り付けてもいいようにデコード var keysString = keysString.match(/^%5B.*/) ? urldecode(keysString) : keysString; //辞書にあわせてkeysをvaluesに置換 var valuesString = keys2values(keysString, imDict); //outputシートに書き出し outputSheet.appendRow([name,valuesString]); //inputシートの入力をクリア inputRange.clear(); function urldecode(str){ var decoded = decodeURI(str); //decodeURIだとカンマが置換されなかったので仕方なく置換 //replaceが最初の要素しか置換しないのでカンマがなくなるまで繰り返す var result = decoded; do{ decoded = result; result = decoded.replace("%2C", ","); }while(decoded !== result); return result; } //辞書の要素数だけ回してしらみつぶしに置換 function keys2values(str, imDict){ Object.keys(imDict).forEach(function(key){ str = str.replace(String(key), String(this[key])); }, imDict); return str; } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問