前提・実現したいこと
スプレッドシートのデータを元に、Googleスライドのシェイプ内の文字列を置換してくれるようにしたい。
発生している問題・エラーメッセージ
for分で繰り返し処理を行って置換をしているのですが、繰り返し処理の最後の部分だけが置換されてしまう。
下の画像のように、スプレッドシートのデータを元に置換を行いたいのですが、繰り返し処理の一番最後の部分(g→Gの置換)だけが実行されてしまう状況です。
該当のソースコード
JavaScript
1function replaceShapeString(){ 2 3 var url ='スライドのURL'; 4 var presentation = SlidesApp.openByUrl(url); 5 6 var sheet = SpreadsheetApp.openById('スプレッドシートのID').getSheetByName('シート名') 7 var values= sheet.getRange('範囲').getValues(); 8 var lastRow = sheet.getLastRow(); 9 10 11 for(var i = 2; i <= lastRow; i++) { 12 var id = (sheet.getRange(i, 1).getValues()); 13 } 14 15 for(var i = 2; i <= lastRow; i++) { 16 var pattern = (sheet.getRange(i, 2).getValues()); 17 } 18 19 for(var i = 2; i <= lastRow; i++) { 20 var replacement = (sheet.getRange(i, 3).getValues()); 21 } 22 23 replaceShapeString_(presentation, id, pattern, replacement) 24 25 26} 27 28function replaceShapeString_(presentation, id, pattern, replacement){ 29 30 var shape = presentation.getPageElementById(id).asShape(); 31 var str = shape.getText().asString(); 32 str = replaceInBrace_(str, pattern, replacement); 33 shape.getText().setText(str); 34 35} 36 37function replaceInBrace_(str, pattern, replacement){ 38 39 pattern = '{' + pattern + '}'; 40 str = str.replace(pattern, replacement); 41 return str; 42 43} 44
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/31 21:56
2021/03/31 22:06
2021/04/01 00:58