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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

22239閲覧

GASにてスプレッドシートの値をとりたいがエラーがでてしまい値が取れません

Naoko_Coco

総合スコア54

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/05/07 01:21

編集2019/05/07 03:35

GoogleフォームのGoogle apps scriptの質問です。
初心者です。
申し込み数に制限を設けるスクリプトを作成してます。

現在の申し込み人数を「Sheet人数」から取得しようとしておりますが
『TypeError: オブジェクト Spreadsheet で関数 getsheetByName が見つかりません。』
と、エラー表示され前に進めません。
どなたかご教示いただけますでしょうか?

該当のソースコード

Google

1function endFormCheck() { 2var LIMIT_COUNT = 5; //ここで席数上限を設定 3var ANSWER_LENGTH = 3; //時間帯の数 4var answerCount = [0,0,0];//カウント用:時間帯の数分配列を準備します 5var itemID = 0; 6 7var form = FormApp.getActiveForm(); //アクティブフォームを取得 8 9var formResponses = form.getResponses(); // 全回答内容を取得 10 11//スプレッドシートの取得 12var sheets = SpreadsheetApp.openById('ID').getSheets(); 13var sheet = SpreadsheetApp.openById('ID').getSheetByName ('人数');←ここでエラー発生 14var sum1 = sheet.getRange("E2").getValue(); 15var sum2 = sheet.getRange("E3").getValue(); 16var sum3 = sheet.getRange("E4").getValue(); 17 18answerCount[0] = sum1; 19answerCount[1] = sum2; 20answerCount[2] = sum3; 21Logger.log(sum1,sum2,sum3); 22 23 24// LIMIT_COUNTになっている選択肢があるかチェック 25var answerCheck = 0; 26var choiceArray = []; 27var arrayCount = 0; 28for(var i = 0; i < ANSWER_LENGTH; i++){ 29if(answerCount[i] == LIMIT_COUNT){ 30answerCheck++; 31} 32else{ // LIMIT_COUNTになっていない選択肢は残す 33if ( i == 0 ){ choiceArray[arrayCount] = '6月18日(火)PM'; arrayCount++; } 34else if( i== 1 ){choiceArray[arrayCount] = '6月20日(木)AM'; arrayCount++;} 35else if( i== 2 ){choiceArray[arrayCount] = '6月20日(木)PM'; arrayCount++;} 36} 37} 38 39// 全てLIMIT_COUNTなら申込みフォームを受付終了 40if(answerCheck == ANSWER_LENGTH){ 41form.setAcceptingResponses(false); 42} 43 44// LIMIT_COUNTになっていない選択肢を「参加する時間」の選択肢に設定する 45if( (answerCheck != ANSWER_LENGTH) && (answerCheck >= 1)){ 46var items = form.getItems(); 47for (var i= 0; i< items.length; i++ ){ 48var item = items[i]; 49if( item.getTitle() == '説明会日程' ){ 50var choice = item.asMultipleChoiceItem().getChoices(); 51item.asMultipleChoiceItem().setChoiceValues(choiceArray); 52} 53} 54} 55}

試したこと

色々と書き方を変えてみたのですがまったくうまくいきません。
最初は下記のように書いてました。
var sheet = ('人数')
その際のエラーメッセージは『TypeError: オブジェクト 人数 で関数 getRange が見つかりません。』でした。

補足情報(FW/ツールのバージョンなど)

var sheet = sheets.getSheets()[1];
と書き直しても同じように『関数 getSheets が見つかりません。』というエラーになってしまいます。

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

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

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

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

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

tetsunosuke

2019/05/07 02:40

いろいろ試しているせいか、最新のコードとエラーが異なるように見えます。 SpreadsheetApp.openById("ID").getsheetByName("人数") と書いていたせいで、最初はエラーになったのだと思います。(getSheetByNameのようにSが大文字であるべきだった) またコードの貼り付けは、 ```lang-言語名 テキスト ``` のようにフォーマットしたものを貼りましょう
m.ts10806

2019/05/07 03:13

タイトルには要件(実現したいこと起きている問題)を記載してください。タグにある内容を改めて記載しなくても良いです
Naoko_Coco

2019/05/07 03:30

ありがとうございます。 このページも初めてなもので申し訳ございません。 現在は var sheet = sheets.getSheetByName('人数'); と記入しておりますが、エラーは変わりません。
m.ts10806

2019/05/07 03:31

質問は編集できますので適宜ご対応いただけたらと
tetsunosuke

2019/05/07 03:34

sheetsにはgetSheetByNameはないと思います。 SpreadsheetApp.openById('ID') で「idが”ID”のスプレッドシート(のファイル)」を取得し、 これは、そのファイルの中の全てのシートを取得しています。 var sheets = SpreadsheetApp.openById('ID').getSheets(); sheetsはあくまでも配列なので、そこにgetSheetByNameという関数は存在しません。 これは var sheet = SpreadsheetApp.openById('ID').getSheetByName ('人数'); そのファイルの中からシート名が”人数”のものをとっていますよね
Naoko_Coco

2019/05/07 05:07

tetsunosukeさん var sheet = SpreadsheetApp.openById('ID').getSheetByName ('人数'); にしたらエラーもなくなりすすめました。 まだほかの問題はございますが、ちょっと調べてから再度質問させていただきます。 ありがとうございました。
guest

回答1

0

自己解決

tetsunosukeさんのおかげで
var sheet = SpreadsheetApp.openById('ID').getSheetByName ('人数');
にしたらエラーもなくなりすすめました。
まだほかの問題はございますが、ちょっと調べてから再度質問させていただきます。
ありがとうございました。

投稿2019/05/07 05:08

Naoko_Coco

総合スコア54

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問