teratail header banner
teratail header banner
質問するログイン新規登録
Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

5063閲覧

GASでアクティブシートを取得したい

torikara_u-hai

総合スコア11

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2019/05/07 08:48

編集2019/05/07 08:54

0

1

Google Apps Scliptで躓いたので質問です。

とっても初歩的なことで躓いてしまって自分でも驚いているのですが、
SpreadsheetApp.getActiveSpreadsheet();
を実行するとnullが返ってきてしまうという問題です。

下記コードです

Google

1 var sheet = SpreadsheetApp.open(nowfile); 2 var hyo = sheet.getSheetByName('テンプレート'); 3 var copySs = hyo.copyTo(kinmusheet); 4 //名前をオペ月用に変更 5 var sheetName = nameStmonth + '月'; 6 copySs.setName(sheetName); 7 8 copySs.getRange(1, 1).setValue(opemonth.format('YYYY/MM/01')); 9 copySs.getRange(1, 10).setValue(stfss[i][4]); 10 copySs.getRange(1, 23).setValue(stfss[i][5]); 11 copySs.getRange(2, 23).setValue(stfss[i][1]); 12 13 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 14 spreadsheet.moveActiveSheet(1);

有識者の方いらっしゃいましたら、よろしくお願いいたします。

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

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

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

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

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

papinianus

2019/05/07 14:24

この処理を含む関数がどのようなトリガーにつけられていて、そのトリガーがどう発火したかが影響するので追記をお願いしたいです。 記憶が曖昧で申し訳ないですが、変更時トリガーでセルのコメントを削除するとActiveCellが取れなくなるとかいう現象があった気がします(もしかしたら、そのときActiveSheetも取れなくなったかもしれない)。なのでトリガと操作は重要です
torikara_u-hai

2019/05/08 00:42 編集

トリガーはまだつけておらず、手動で実行している状態です。
guest

回答2

0

ベストアンサー

ご提示のコードは部分的なものと見え、前後関係が分かりませんので推測が入りますが、openなどのAPIは使われているものの現在アクティブになっているスプレッドシートが無いのだろうと思えます。
setActiveSpreadsheetで明示的にスプレッドシートをアクティブにしてそれを対象に処理をしてみてください。

Google Apps Script - setActiveSpreadsheet(newActiveSpreadsheet)

投稿2019/05/08 01:14

dodox86

総合スコア9416

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

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

torikara_u-hai

2019/05/08 01:23

まさに!!!まさにそれです!!!大成功ですありがとうございました!!!
macaron_xxx

2019/05/08 04:18

なんでActiveにするのか意味がわからないのですが…。
papinianus

2019/05/08 05:06

macaron_xxx様のおっしゃるとおり、openしているなら、それをそのまま操作すればよいのでは。
dodox86

2019/05/08 05:36

前後にもっとコードがあるかと思ったのもあって先の回答をしましたが、お二人の仰るように、すでにつかんでいるスプレッドシートがあるのなら、それを使う方が確かに適切そうです。
macaron_xxx

2019/05/08 07:50

>すでにつかんでいるスプレッドシートがあるのなら なければsetActiveSpreadsheetできませんよね。 つかんでいるものに対してsetしてgetしても…???
guest

0

やりたいことは
sheet.getActiveSheet() のように思いましたが、違いますか?

投稿2019/05/07 09:24

tetsunosuke

総合スコア1295

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

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

torikara_u-hai

2019/05/08 00:39 編集

'sheet.getActiveSheet()'ですと、'moveActiveSheet'メソッドが使用できないので…
tetsunosuke

2019/05/08 01:24 編集

なるほどたしかにそうですね 追記修正依頼等にもあるように、ちょっと全体感がわからなかったので、 見えていませんでした。 こちらのケースと同じような感じっぽいですね。 https://stackoverflow.com/questions/50105012/getactivespreadsheet-always-returns-null 手動実行の場合はスプレッドシートから作成したかどうかが鍵だと思います。 「Standalone Script」(ドライブ上に単独で存在するもの) 「Container Bound Script」(スプレッドシートに紐づくもの) のうち、後者でないと取得できないのでしょう。 Container Bound Scriptについてのリファレンスはこちらです。 https://developers.google.com/apps-script/guides/bound
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問