➕
GASのgetFormula()で式を文字列として取得する
背景
GASでセルの値を取得する時に使用する時、
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const str = sh.getRange(1, 1).getValue();
でシートのA1の値を取得することができます。
ただ、たとえばセルの中身を
+1+2
の文字列として取得したい時、
スプレッドシートでは、自動的に式として認識するため、getValue()
をしたときに3の値が返ってきてしまいます。
解決策の一つとして、セルの値の先頭に'(シングルクォーテーション)をつけてあげれば、文字列として認識してくれますが。。。
セルの値が多い時に、手動で全てのセルにシングルクォーテーションをつけるのは大変すぎます💧
できればGASの中で全てのセルを文字列として認識させてあげたい!
解決策
そこで使えるのがgetFormula()
です。
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const str = sh.getRange(1, 1).getFormula();
console.log(str)
をすると
=+1+2
のようにセルの中の式の中身がそのまま返ってきます。
あとは先頭の=
が邪魔なので、
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const str = sh.getRange(1, 1).getFormula().slice(1); // sliceで先頭の文字を除外
console.log(str)
とすれば、
+1+2
と無事、計算する前の文字列として取得することができます!
Discussion