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

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

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google スプレッドシート

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

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

Q&A

1回答

2622閲覧

GAS 最終列の次の列にデータを出力する方法がわかりません

ghdsghdghdgh

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google スプレッドシート

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

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

0グッド

1クリップ

投稿2020/07/27 02:29

編集2022/01/12 10:55

前提・実現したいこと

GASでスクレイピングに取り組んでいます。

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

下記コードでは「書き込む行は最終行の次の行から」となっていますが、最終列を取得し、最終列の次の列にデータを追加していきたいです。
getLastColumn();などを使えば良いとはわかるのですが、上手くできません、お知恵を貸していただきたいです。

該当のソースコード

JavaScript

1ソースコード 2``````ここに言語を入力 3ここに言語を入力

function get_title_link() {
// 対象ページのURL
var getUrl = 'https://news.yahoo.co.jp/';
// htmlをテキスト情報にして抽出
var html = UrlFetchApp.fetch(getUrl).getContentText('UTF-8');
// ニュースのタイトルを抽出
var title_list = Parser.data(html).from('<div class="newsFeed_item_title">').to('</div>').iterate();
// ニュースの公開された時間を抽出
var time_list = Parser.data(html).from('<time class="newsFeed_item_date">').to('</time>').iterate();
// 記事へのリンクを抽出
var url_list = Parser.data(html).from('<a class="newsFeed_item_link" href="').to('" data-ylk="').iterate();
// シートの指定.GoogleスプレッドシートのURLの「https://docs.google.com/spreadsheets/d/***************************************/edit#gid=0」の部分を使う.
var spreadsheet = SpreadsheetApp.openById('1GnjV-4Gkl-w7w1Rkfb6dZrdMkmcpkrbpC_yj6ooopm8');
// シート1をスポーツに命名(スポーツニュースのみに絞ってスクレイピング)
var sheet = spreadsheet.getSheetByName('シート1');
// 最終行を取得
var lastrow = sheet.getLastRow();
// 書き込む行は最終行の次の行から
var recordrow = lastrow + 1;
// 過去の記録を確認
var oldurl_list = [];
var start = 2;
if (lastrow > 26){
start = lastrow - 25;
}
for(var i = start; i <= lastrow; i++){
oldurl_list.push(sheet.getRange("C" + i).getValue());
}
for(var i = url_list.length-1; i >= 0; i--){
if(oldurl_list.indexOf(url_list[i]) == -1){
sheet.getRange("A" + recordrow).setValue(time_list[i]);
sheet.getRange("B" + recordrow).setValue(title_list[i]);
sheet.getRange("C" + recordrow).setValue(url_list[i]);
recordrow++;
}
}
}

![画像で言うと次に実行した時にはE列に出力できるようにしたいと言うことです](b2a34c021b7721d7807996880d8906d4.png)

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

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

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

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

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

guest

回答1

0

Sheet クラスの getDataRange メソッドでデータが格納されている範囲が取得できるので、その中身の値から判断するのが良いかと思います。

以下のように列数が取得できます。

JavaScript

1var range = sheet.getDataRange() 2var values = range.getValues() 3console.log(values[0].length)// 列数が取得できる

投稿2020/07/27 12:54

tanabee

総合スコア96

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問