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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Google Apps Script

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

Q&A

解決済

2回答

276閲覧

スプレッドのアクティブシートのURLリンクを指定した別ファイルのBの一番下のセルに入力

hiroshi1976

総合スコア1

Google Apps Script

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

0グッド

1クリップ

投稿2024/02/07 13:57

実現したいこと

スプレッドシートで新規ファイルを作成した際に共有リンクを別ファイルのB列の一番下の空白セルに追記したいです。

発生している問題・分からないこと

function main() {
// 共有リンクを取得するスプレッドシート
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet();

// 共有リンクを貼り付けるスプレッドシート
var targetSheet = SpreadsheetApp.openById('TARGET_SHEET_ID');

// 共有リンクを取得
var sharedLink = getSharedLink(sourceSheet);

// 別ファイルのB列の一番下セルを取得
var bottomCell = getBottomCellInColumnB(targetSheet);

// 共有リンクを貼り付ける
bottomCell.setValue(sharedLink);
}
を実行するとReferenceError: getSharedLink is not defined
main @ コード.gs:9となってしまいます。

該当のソースコード

function main() { // 共有リンクを取得するスプレッドシート var sourceSheet = SpreadsheetApp.getActiveSpreadsheet(); // 共有リンクを貼り付けるスプレッドシート var targetSheet = SpreadsheetApp.openById('TARGET_SHEET_ID'); // 共有リンクを取得 var sharedLink = getSharedLink(sourceSheet); // 別ファイルのB列の一番下セルを取得 var bottomCell = getBottomCellInColumnB(targetSheet); // 共有リンクを貼り付ける bottomCell.setValue(sharedLink); }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

何処にも記載がなく、自分も素人なので行き詰っている

補足

特になし

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

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

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

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

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

YAmaGNZ

2024/02/07 22:12

getSharedLinkという関数が定義してありませんといったエラーみたいですがgetSharedLinkとは何なのでしょうか? どこか参考にされたところに書いてあったりしませんか?
hiroshi1976

2024/02/10 00:38

AIに質問をして出てきた内容でした。新規でファイルを作成している際に、そのシートのリンクを別ファイルのB列の最終行に追記するようにしたいと思っております
guest

回答2

0

ベストアンサー

例えば次のようなコードが参考になるでしょうか。
実際に動作するようにしてあります。

JavaScript

1// こちらは変更していません。 2function main() { 3 // 共有リンクを取得するスプレッドシート 4 var sourceSheet = SpreadsheetApp.getActiveSpreadsheet(); 5 6 // 共有リンクを貼り付けるスプレッドシート 7 var targetSheet = SpreadsheetApp.openById('TARGET_SHEET_ID'); 8 9 // 共有リンクを取得 10 var sharedLink = getSharedLink(sourceSheet); 11 12 // 別ファイルのB列の一番下セルを取得 13 var bottomCell = getBottomCellInColumnB(targetSheet); 14 15 // 共有リンクを貼り付ける 16 bottomCell.setValue(sharedLink); 17} 18 19// スプレッドシートを共有設定してリンクを取得 20function getSharedLink(ss) { 21 // 共有権限の設定 22 const access = DriveApp.Access.ANYONE_WITH_LINK; // リンクを知っている全員 23 const permission = DriveApp.Permission.EDIT; // 編集者 24 // const permission = DriveApp.Permission.VIEW; // 閲覧者 25 26 // ファイルの共有設定 27 const ssId = ss.getId(); 28 const ssFile = DriveApp.getFileById(ssId); 29 ssFile.setSharing(access, permission); 30 31 // ファイルのリンクを戻す 32 return ss.getUrl(); 33 // return ssFile.getUrl(); 34} 35 36// スプレッドシートの既定のシートのB列の一番下のセルを取得 37function getBottomCellInColumnB(ss) { 38 // セルを取得するシートの指定 39 const sheet = ss.getSheets()[0]; // 左端[0]のシートを取得 40 // const sheet = ss.getSheetByName('シート1'); // シート名で指定する場合 41 42 // B列の最終行を取得 43 const lastRow = sheet.getRange(sheet.getMaxRows(), 2).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); 44 45 // B列の最終行の下のセルを戻す 46 return sheet.getRange(lastRow + 1, 2); 47}

投稿2024/02/07 23:47

編集2024/02/08 00:14
YellowGreen

総合スコア861

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

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

hiroshi1976

2024/02/11 02:29

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

0

関数 getSharedLink() と getBottomCellInColumnB() が定義されていないため、それらの関数を定義する必要があります。

function main() { // 共有リンクを取得するスプレッドシート var sourceSheet = SpreadsheetApp.getActiveSpreadsheet(); // 共有リンクを貼り付けるスプレッドシート var targetSheet = SpreadsheetApp.openById('TARGET_SHEET_ID'); // 共有リンクを取得 var sharedLink = getSharedLink(sourceSheet); // 別ファイルのB列の一番下セルを取得 var bottomCell = getBottomCellInColumnB(targetSheet); // 共有リンクを貼り付ける bottomCell.setValue(sharedLink); } // 共有リンクを取得する関数 function getSharedLink(sheet) { // 共有リンクを取得する処理 // 例えば、シート内のセルから共有リンクを取得する処理など // 以下は仮の処理として 'SHARED_LINK_PLACEHOLDER' を共有リンクとして返す return 'SHARED_LINK_PLACEHOLDER'; } // 別ファイルのB列の一番下セルを取得する関数 function getBottomCellInColumnB(sheet) { var lastRow = sheet.getLastRow(); var range = sheet.getRange('B' + lastRow); // 空白セルを見つけるまで下に移動 while (range.getValue() !== "") { lastRow++; range = sheet.getRange('B' + lastRow); } return range; }

これらの関数の具体的な実装は、各自の用途や条件に合わせて行ってください。

投稿2024/02/07 22:35

shoshinsha123

総合スコア215

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

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

hiroshi1976

2024/02/11 02:30

回答ありがとうございます。 ベストアンサーは別の方を選ばせていただきましたが、こちらの回答も非常に参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問