見出し画像

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」を入れるという処理です。

画像2

せっかくなのでconsole.logを入れて実行してみます。

画像5

セリフが出力されてD列に「TRUE」が入りました。やったー!


2 テンプレート文字列

`${rangeValues[i][1]}`  って何?

テンプレート文字列です。

バックティック(`)で囲まれた文字列をテンプレート文字列といい、文字列のリテラルの一種です。テンプレート文字列にはいくつかの便利機能があります。まず、「${ … }」という謎の記号たちがその一つです。これはプレースホルダーといい、波かっこの間に変数や定数を含む式をはめ込むことができます。


テンプレート文字列を使わないで書いてみます。

画像2

エラーが出ています( ̄ ‘i  ̄;)

画像3

typeof演算子でデータ型を確認。

画像5

両方文字列型じゃん(T_T)

なのに入れられない…。ループの段階では取得する値のデータ型がわからないからかな?

ということで、テンプレート文字列を使って文字列だよ!と指定しました。


3 空文字を足してみる

値を文字列型にする方法として空文字「””」を足してみるという方法もあります。(最近知った)

画像6

これで実行してみます。

画像7

セリフが出力されてD列に「TRUE」が入りました。やったー!

こちらの方が簡単なので、最近はこの書き方をしています。


4 今日のまとめ

・変数に文字列が入らないときはテンプレート文字列や空文字を使って値を文字列型にしてみる


お疲れさまでした。

この記事が気に入ったらサポートをしてみませんか?