前提・実現したいこと
https://teratail.com/questions/116487からの派生の質問です。
スプレッドシートにて、
「C列に入った文字列が14文字以上のとき、最初から14文字だけ表示する」
というスクリプトを書いたつもりなのですが、うまく作動してくれません。
なにがよくないのかわからないので、添削をお願いしたいです。
よろしくお願いします。
該当のソースコード
javaScript
1function juyonmoji() { 2 //変数spreadsheetに指定のスプレッドシートオブジェクトを取得します 3 var url = "***"; 4 var sheet = SpreadsheetApp.openByUrl(url); 5 var ss = SpreadsheetApp.getActiveSpreadsheet(); 6 var val4 = sheet.getRange('C'+ sheet.getLastRow()).getValue(); 7 if(val4.length >= 14){ 8 val4.substring(0, 14); 9 } 10}
追記
あれっ…? どうやら私、的外れなことを書いてしまった模様…?
やりたいことは、「C列に入った文字列が14文字以上のとき、
そのC列に入った文字列の最初の14文字を表示」ということです。
「.substring(0, 14)」と書けば、最初から14文字だけを表示してくれると思ったのですが…。
文字列を格納という意味もちょっとよくわからないです。
そもそも、まず私はjavaScriptの基本を学ばないといけないような気がしますが、
なにをどう学んでいいのかもよくわからない状態です。。。
悪気はなかったのですが、、お手数をおかけします…。
にも関わらず、お返事くださって、みなさま、ありがとうございます。。
追記(2)
関連の質問を投稿しました。もしよかったら見てください。
https://teratail.com/questions/116655
#~解決後のまとめ~
otnさんの回答を参考に解決しましたので、まとめておきます。
できました。
あっ!!? でっ、できました!私がやりたいと思ったことができたみたいです!!
そうか、「表示」と「書き換え」は違うのですね!
私の言葉の使い方がよくなかったようです。よくぞ、推理していただきました…!
完成したスクリプトを書いておきます!
完成形です。
javaScript
1function juyonmoji() { 2 //変数spreadsheetに指定のスプレッドシートオブジェクトを取得します 3 var url = "***"; 4 var sheet = SpreadsheetApp.openByUrl(url); 5 var ss = SpreadsheetApp.getActiveSpreadsheet(); 6 var val4 = sheet.getRange('C'+ sheet.getLastRow()).getValue(); 7 if(val4.length >= 14){ 8 val4 = sheet.getRange('C'+ sheet.getLastRow()).setValue(val4.substring(0, 14)); 9 } 10}
ちなみに、「setValue()」という文は、ここ数日で初めて見ました…。
「get」と「set」では、似ているようで、働きが違うのですね…!
みなさま、助けていただいて、ありがとうございました!!
参考記事(2018/03/27 追記)
・https://java-reference.com/java_string_cut.html
メソッドの存在はここなど、いろいろなところに書いてあったのですが、
個人的に出力方法が正しくなかったことが原因だったようです。
・https://teratail.com/questions/116569
当記事です。「setValue()」というメソッドを知りました。



回答2件
あなたの回答
tips
プレビュー