前提・実現したいこと
SUBSTITUTEのマルチ処理
ここに質問の内容を詳しく書いてください。
スプレッドシートでSUBSTITUTEのマルチ処理gsを作成
発生している問題・エラーメッセージ
構文エラー: SyntaxError: Unexpected identifier 行: 15 ファイル: コード.gs
該当のソースコード
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; } }
試したこと
問題行目:
for each(var val in dictValues){
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。