質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

13515閲覧

GASを使ってセルの値を取得する方法

fuku-chann

総合スコア82

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

1グッド

1クリップ

投稿2020/05/06 03:03

編集2020/05/07 02:59

GASでコーディングを行っていますが、セルの値を取得するところで躓いております。
GASではどのようにセルの値を取得するのでしょうか?

現在、下記のエラーが発生しています。

TypeError: str.includes is not a function(行 5、ファイル「コード」)

ご存知の方いらっしゃいましたら、ご教示ください。
よろしくお願いいたします。

GAS

1function contact_Gmail() { 2 var ss = SpreadsheetApp.openById('ID'); 3 var mySheet = ss.getSheets()[0]; 4 var str = mySheet.getRange(1,1); 5 if (str.includes("テ")){ 6 mySheet.getRange(1,2).setValue("含まれる"); 7 } else { 8 mySheet.getRange(1,2).setValue("含まれない"); 9 } 10}
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

下記のコードで解決しました。
助言いただきましたdodox86様ありがとうございました。

GAS

1function contact_Gmail() { 2 var ss = SpreadsheetApp.openById('ID'); 3 var mySheet = ss.getSheets()[0]; 4 var cells = mySheet.getRange(1,1); 5 var str = mySheet.getRange(1,1).getValue(); 6 if (str.includes("検索したい文字")) { 7 mySheet.getRange(1,2).setValue('含まれる'); 8 } else { 9 mySheet.getRange(1,2).setValue('含まれない'); 10 } 11}

不十分だったので修正しました。
var str = Array.prototype.concat.apply([],cells.getValues()).includes('テ');
if (str >= 0) {
↓ ↓ ↓
var str = mySheet.getRange(1,1).getValue();
if (str.includes("検索したい文字")) {

投稿2020/05/06 05:04

編集2020/05/07 02:58
fuku-chann

総合スコア82

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ご質問の本来の主旨、「GASを使ってセルの値を取得する方法」から離れますが、エラーの内容「TypeError: str.includes is not a function(行 5、ファイル「コード」)」は、変数strincludesメソッドの実行時にstr.includesが正しく関数(メソッド)として認識できないことを意味しています。

ご提示のソースコード中、getRange(1,1).Valueで得られたオブジェクトが正しく文字列(String)で取得できているとしたら、GASで使用しているJavaScriptのエンジンのせいかもしれません。ご提示のコードをもとにした以下のテストコードを実行すると、str.includesの実行で例外が発生します。

GAS

1function contact_Gmail() { 2// var ss = SpreadsheetApp.openById('15olcqFfRIFFq4jqFMC__bDim7xuLAjS5D38nvQeS8S0'); 3// var mySheet = ss.getSheets()[0]; 4 var mySheet = SpreadsheetApp.getActiveSheet(); 5 6 var str = mySheet.getRange(1,1).Value; 7 try { 8 str = "タチツテト"; 9 if (str.includes("テ")) { 10 mySheet.getRange(1,2).setValue("含まれる"); 11 } else { 12 mySheet.getRange(1,2).setValue("含まれない"); 13 } 14 } catch (ex) { 15 Logger.log("Exception: " + ex); 16 } 17}

そして、上記のコードで以下のログ出力が得られます。

[20-05-06 12:15:56:375 JST] Exception: TypeError: オブジェクト タチツテト で関数 includes が見つかりません。

これは、少なくともString#includesは使えないことを意味しています。これをスクリプトエディタから「Chrome V8を搭載した新しい Apps Script ランタイムを有効にする」と、str.includesが使え、意図通り「含まれる」の行が実行されます。

イメージ説明

Chrome V8エンジンを使いたくない場合、つまり旧来のGASのJavaScript実行エンジン(Rhino)を使い続けるのであれば、String#includesではなく、別のメソッドを使うようにコードを修正する必要があるはずです。

投稿2020/05/06 03:40

dodox86

総合スコア9369

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuku-chann

2020/05/06 04:18

dodox86様 ご回答ありがとうございます。 本文に関連のキャプチャ画像を掲載しますが、すでにCromeV8エンジンが適用されていると思います。 V8の環境でエラーが発生しています。 Javascriptでは問題なくできるということでしょうか?(GASはJSをベースに作られているようですが、使えない機能があったり、少し違うのでしょうか。。。) string#includes以外でも良いので、同様の機能を持つコードが知りたいです。
dodox86

2020/05/06 05:04

> 本文に関連のキャプチャ画像を掲載しますが、すでにCromeV8エンジンが適用されていると思います。 fuku-channさんが提示されたエラーメッセージとは微妙に違っていたので違うかなとは思っていましたが、Chrome-V8エンジンで動作させているのであればString#includeは使える、ということで、問題として注目すべき点はまた最初に戻ります。 > (GASはJSをベースに作られているようですが、使えない機能があったり、少し違うのでしょうか。。。) まったく同じと思わない方がよいです。あくまで、ベースです。細かい部分はGASのリファレンスと突き合せる必要があると思います。 で、今回のコードをよく見ると、先のご質問「if構文の条件を作成する方法」(https://teratail.com/questions/259185)とはgetRange()での取得の方法が変わっていますね。 前のもの > var str = mySheet.getRange(1,1).Value; 今のもの > var str = mySheet.getRange(1,1); このせいもあるのではないですか? var str にセットされたセルの値がStringであることを確認してください。
dodox86

2020/05/06 05:06

別の方法を用いて解決されたようですね。承知しました。
fuku-chann

2020/05/06 05:07

dodox86様 ご回答ありがとうございます。 行き違いになりすみません。 当初の方法ではやはりうまくいかなかったため、別のメソッドを使いました。 やはりjsとは違うのですね;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問