OfficeScriptsで名言ボットを作ってみた⑪ 変数に文字列がうまく入らない😥
こんにちは。aliceです。
OfficeScripts初心者が名言ボットを作ってみたシリーズ。はじめてのOfficeScripts。
前回作成した変数に文字列がうまく入らなかったはなしです。
OfficeScriptsとPowerAutomateで名言ボットを作りました。(OfficeScriptsの使用にはweb版のExcelとライセンスが必要です。)
前回のあらすじ
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let range = sheet.getUsedRange();
let rangeValues = range.getValues();
let word = "";
let lastRow = range.getRowCount();
for (let i = 1; i <= lastRow; i++) {
if (rangeValues[i][3] === "") {
sheet.getCell(i, 3).setValue("True");
}
}
}こ
今回は変数wordにセリフを入れていこうと思います。
1 文字列を代入する
「word = `${rangeValues[i][1]}`」を追加します。
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let range = sheet.getUsedRange();
let rangeValues = range.getValues();
let word = "";
let lastRow = range.getRowCount();
for (let i = 1; i <= lastRow; i++) {
if (rangeValues[i][3] === "") {
word = `${rangeValues[i][1]}`; //←ここに追加
sheet.getCell(i, 3).setValue("True");
}
}
}
iは行番号(インデックスの番号)
1は列番号(A列:0、B列:1なのでB列です)
もし、D列に「TRUE」が入っていなかったらD列に「TRUE」を入れるという処理です。
せっかくなのでconsole.logを入れて実行してみます。
セリフが出力されてD列に「TRUE」が入りました。やったー!
2 テンプレート文字列
`${rangeValues[i][1]}` って何?
テンプレート文字列です。
バックティック(`)で囲まれた文字列をテンプレート文字列といい、文字列のリテラルの一種です。テンプレート文字列にはいくつかの便利機能があります。まず、「${ … }」という謎の記号たちがその一つです。これはプレースホルダーといい、波かっこの間に変数や定数を含む式をはめ込むことができます。
テンプレート文字列を使わないで書いてみます。
エラーが出ています( ̄ ‘i  ̄;)
typeof演算子でデータ型を確認。
両方文字列型じゃん(T_T)
なのに入れられない…。ループの段階では取得する値のデータ型がわからないからかな?
ということで、テンプレート文字列を使って文字列だよ!と指定しました。
3 空文字を足してみる
値を文字列型にする方法として空文字「””」を足してみるという方法もあります。(最近知った)
これで実行してみます。
セリフが出力されてD列に「TRUE」が入りました。やったー!
こちらの方が簡単なので、最近はこの書き方をしています。
4 今日のまとめ
・変数に文字列が入らないときはテンプレート文字列や空文字を使って値を文字列型にしてみる
お疲れさまでした。