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

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

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

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

Google Apps Script

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

Google

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

Q&A

解決済

1回答

1292閲覧

GASを使用してスプレッドシートの内容をドキュメントに自動でコピーしたい

vin99

総合スコア6

Google スプレッドシート

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

Google Apps Script

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

Google

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

0グッド

0クリップ

投稿2019/11/09 11:37

編集2019/11/09 11:39

GASを利用して自動化したい内容としては、以下の①~③です。

  1. ドキュメントのテンプレートのコピーをフォルダ内に作成する
  2. 作成したドキュメントの名前をスプレッドシートのE3に入っている値に変更
  3. 作成したドキュメントの「insert_text」の文字列とスプレッドシートのB33からC71の内容を移し替える

この3つの作業のうち1と2の動作は正常に作動しますが3の動作が上手くいきません。どうしたら良いか教えてもらえると幸いです。

GAS

1function makeDocuments() { 2 //スプレッドシート、シート、行数、シートIDを取得 3 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4 const sheet = spreadsheet.getActiveSheet(); 5 const range = sheet.getRange("E3"); 6 const value = range.getValue(); 7 const fileId = 'シートのIDが入っています' 8 9 //スプレッドシートのB33からC71の範囲をコピー 10 const selectedRange = sheet.getRange(33,2,71,3); 11 const selectedValues = selectedRange.getValues(); 12 13 //コピー元のファイルを開く 14 const file = DriveApp.getFileById(fileId); 15 16 //コピーを作成。 17 const newFile = file.makeCopy(value); 18 return newFile; 19 20 //insert_textに貼り付け 21 selectedValues.replaceText("insert_text",selectedValues); 22 23 //ドキュメントを格納するフォルダを取得 24 const targetFolder = DriveApp.getFolderById("フォルダーのIDが入っています"); 25 26 //指定したフォルダに所属(移動)させる 27 const docFile = DriveApp.getFileById(document.getId()); 28 targetFolder.addFile(docFile); 29 30} 31

参考サイト
【GAS】領収書への名前入れ作業を自動化する - クイックノート

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

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

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

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

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

papinianus

2019/11/10 01:49

B33からC71だと数十のセルがあるのですが、それをinsert_textにどういった体裁で入れる計画なのですか?あと日付はないですよね?
guest

回答1

0

ベストアンサー

一応コードに関して、いくらか疑問点があるので書いておきます。

1
const selectedValues = selectedRange.getValues();

そのあと

selectedValues.replaceText("insert_text",selectedValues);

.replaceTextに対して、作成したドキュメントファイルを選択して無い様にみえました。


2
そもそも

//コピーを作成。
const newFile = file.makeCopy(value);
return newFile;

ここでreturnしているので、そこでプログラムが終了しているようなきもします。


自分はそこまでプログラム言語のことは詳しくないので、意図した動きがあるのかもしれませんが、

とりあえずどこまでコードが進んでいるのかをみるのに、デバックモードにするなり、コードの至る所に

Logger.log("どこどこまで処理した。")

1

っていう文をいれておけば、とりあえずなにか見えるものが出てくると思います。

投稿2019/11/10 04:25

編集2019/11/10 23:20
takaD

総合スコア315

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問