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

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

ただいまの
回答率

90.52%

  • Google Apps Script

    844questions

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

GASの使い方が分かりません。。どなたか教えてください

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 416

hikaru1989

score 1

 前提・実現したいこと

ここに質問の内容を詳しく書いてください。
Google App Scriptでシートから代入データをimportrange関数内に移したいと思ったのですが、エラーが出てしまいわからなくなってしまいました。

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

構文エラー。(行 18、ファイル「ファイル作成」

 該当のソースコード

function SetActiveSheet() {
 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var objSheet = objSpreadsheet.getSheetByName("リストID");
 SpreadsheetApp.setActiveSheet(objSheet);
 var range = objSheet.getRange("B1");//セルB1を取得
 var value = (range.getValue());
 SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName(value);
 var sheet = SpreadsheetApp.getActiveSheet();
 sheet.clear();

// シートCにシートBで選択したデータを挿入する
 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var objSheet = objSpreadsheet.getSheetByName("リストID");
 var rangeToCopy = objSheet.getRange("A1");
 var sht = SpreadsheetApp.getActiveSpreadsheet();
 var SHT = sht.getSheetByName(value)
 var SHT = SpreadsheetApp.getActiveSpreadsheet();
 SHT.getRange('A1').setFormula('=importrange,(',+.setvalue(rangeToCopy)+,"マスタ!B:U")');
}

 試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hikaru1989

    2018/05/17 13:32

    TypeError: オブジェクト Range で関数 setvalue が見つかりません。(行 18、ファイル「ファイル作成」)

    キャンセル

  • hikaru1989

    2018/05/17 13:32

    function SetActiveSheet() { var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var objSheet = objSpreadsheet.getSheetByName("リストID"); SpreadsheetApp.setActiveSheet(objSheet); var range = objSheet.getRange("B1");//セルB1を取得 var value = (range.getValue()); SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName(value); var sheet = SpreadsheetApp.getActiveSheet(); sheet.clear(); // シートCにシートBで選択したデータを挿入する var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var objSheet = objSpreadsheet.getSheetByName("リストID"); var rangeToCopy = objSheet.getRange("A1"); var sht = SpreadsheetApp.getActiveSpreadsheet(); var SHT = sht.getSheetByName(value) var SHT = SpreadsheetApp.getActiveSpreadsheet(); SHT.getRange('A1').setFormula("=importrange,(',"+range.setvalue(rangeToCopy)+",'マスタ!B:U')"); }

    キャンセル

  • hikaru1989

    2018/05/17 13:33

    変更した後試しましたが上記エラーが返りました。。。。

    キャンセル

回答 1

checkベストアンサー

+1

回答に至っていないのですがコードが書けないのでこちらに

function SetActiveSheet() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getSheetByName("リストID");
  SpreadsheetApp.setActiveSheet(objSheet);
  var range = objSheet.getRange("B1");//セルB1を取得
  var value = (range.getValue());
  SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName(value);
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear(); // シートCにシートBで選択したデータを挿入する
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getSheetByName("リストID");
  var rangeToCopy = objSheet.getRange("A1");
  var sht = SpreadsheetApp.getActiveSpreadsheet();
  var SHT = sht.getSheetByName(value);
  var SHT = SpreadsheetApp.getActiveSpreadsheet();
  SHT.getRange('A1').setFormula('=importrange("'+rangeToCopy.getValue()+'","マスタ!B:U")');
}


こうすればおそらくエラーなく実行できるように思います(リストIDシートが存在し、そのA1にスプレッドシートID、B1に既存のシート名に重複しない何らかの文字が入っていれば)
また、IMPORTRANGEが正常に動作するには「マスタ」シートの存在が必要です。

他の方への参考の観点からもいくつかポイントを記載しておきます。

  • 英数字・記号は厳密にお願いします
    構文エラーおよびtypeエラーいずれでも"や'(の対応関係)およびValueがvalueになっているなどが影響しています(もちろんそれだけではないですが)。プログラムを書く上では瑣末な点にも注意してほしいです。
    この点は、当初のコードにあった「+.setvalue」というのも何らかの参考資料から引用した際に.の前が消えるなどしているはずです。融通が効かないのですが、そういうものと割り切ってためしてください。
  • importrange
    importrangeの書式そのものがおかしかったようです。こちらはシートで「=IMPORT」と入れるとヒントが出るはずですので、書式をあわせてください(ここでも,の位置や"の有無が影響します)
  • 問題の特定
    いまだに質問の「エラーが出てしまいわからなくなってしまいました」の何が分からないか分かりません。またやりたいことも私は明確に理解できていないように思います。
    一つには、エラーが出たときは、一行ずつコメントアウトして、どこまでできるかを探ってみてください。
    今回はほぼ最終行にだけエラーがありました(つまりほとんどの部分がはじめからできていた、ということです)。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Google Apps Script

    844questions

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