GASのgetFormula()で式を文字列として取得する

2023/04/07に公開

背景

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