🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

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

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1309閲覧

GASでスプレッドシートの最終行を別のスプレッドシートの最終行に入力したい

Emi-HE

総合スコア6

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

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

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/09/26 03:49

前提・実現したいこと

Google formとGoogle Calendarで会議室予約システムを作りました。
事業所ごとに管理者が違うので、各事業所ごとの予約フォームを作り、
(予約フォームの項目はどの事業所でも同じです。)
「フォーム送信」をトリガーにして予約イベントをカレンダーに登録して、
管理者と予約者に確認メールが届くようシステムを作成しました。

ここまではうまくいったのですが、事業所ごとの予約フォームの回答を
統合していくために、上記の動作の延長で、最新の回答行の配列を
別のマスタースプレッドシートの空白行に入力するコードを書き足すと
下記のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

メソッド getRange(number,number,number,number) が見つかりません。

カレンダーイベントの作成と、管理者・予約者へのメール送信は実行されますが、
マスタースプレッドシートへの入力はされません。

該当のソースコード

//フォーム回答のスプレッドシートのコンテナバインドスクリプトです。 //「フォーム」送信時をトリガーにしています。 //カレンダーイベント作成、メール送信は問題なく動作しているのでコード省略します。 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var num_row = sheet.getLastRow(); var finRow = sheet.getRange(num_row, 1,1,11).getValues(); var mSheet = SpreadsheetApp.openById('コピー先スプレッドシート'); var m_numrow =mSheet.getLastRow(); var m_coprow = m_numrow+1; mSheet.getRange(m_coprow, 1,1,11).setValues(finRow); //ここでエラーが出ます mSheet.getRange(m_coprow,12).setValue("テスト");

試したこと

最終行と最終行+1のログを取りましたが、最終行は1.0(number型)、最終行+1は2.0(number型)でした。
下記の通り、「最終行+1」を変数にせず引数で直接指定してみましたが、結果は変わりません。

Google

1 var m_numrow =mSheet.getLastRow(); 2 evSheet.getRange(m_coprow +1, 1,1,11).setValues(finRow)

調べる限りでは、一般的にgetLastRow()+1でみなさん最終行のすぐ下の空白行を取得できているみたいで、
私のようなエラーで困っている方を探すことができず、こちらに質問致しました。
プログラミングをするのが初めてで、初歩の知識が足りておらず説明が不足している部分が
きっと多々あることと思いますが、何卒、御指南頂けますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

var mSheet = SpreadsheetApp.openById('コピー先スプレッドシート');

「SpreadsheetApp.openById」で取得できるのはSpreadsheetです。
getRangeはSpreadsheetにはありませんので、該当のエラーが発生しています。

var mSheet = SpreadsheetApp.openById('コピー先スプレッドシート').getSheetByName('シート名');

上記のように「getSheetByName」でシートを取得する事でエラーが解消されるかと思われます。

参考

投稿2019/09/26 04:46

yamap55

総合スコア1376

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

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

Emi-HE

2019/09/30 10:35

丁寧に教えてくださりありがとうございました。 万事解決致しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問