GAS(Google Apps Script)에서 정기적으로 값을 기록하는 프로그램을 만들어 보았습니다.
1. 소개
Google 스프레드시트에서 특정 사이트의 특정 값을 XPath로 추출한 다음 해당 값을 GAS(Google Apps Script)로 정기적으로(1시간 동안) Google 스프레드시트의 별도 시트에 기록합니다. 가는 프로그램을 만들어 보겠습니다.
※샘플로서, 어떤 Am〇zon 선물권 판매 사이트의 값을 감시하는 프로그램을 쓰고 있습니다만, 액세스가 집중하는 등 폐를 끼치면 좋지 않으므로, 어디의 사이트인가라고 하는 일까지는 여기에서는 써인가 하지 않겠습니다.
2. Google 스프레드시트에서 웹페이지의 특정 값 표시
・스프레드시트의 「A1」셀에 대상의 WEB 페이지의 URL을 기재
・4행째 이후에, 그 WEB페이지 중에서 특정의 값이 셀상에 쓰여지도록 한다.
-「=IMPORTXML(URL의 셀을 지정, XPath)」로 취득
3. GAS에서 Google 스프레드시트를 읽고 다른 시트에 기록
・Google 스프레드시트에는, 기록용의 별도 시트 「이력」을 만들어 두는 것
· Google 스프레드 시트 URL에서 ID 부분을 기록하는 것
또한 ID 부분은 Google 스프레드 시트 URL의 ↓ 부분입니다.
https://docs.google.com/spreadsheets/d/[ID 부분]/edit#gid=337972102
code.gs//取得するスプレッドシートを指定。スプレッドシートのURLのID部分を指定する。
var ssFile = SpreadsheetApp.openById("**GoogleスプレッドシートのIDを指定**");
//値を取得する対象のシートを指定
var baseSheet = ssFile.getSheetByName("取得シート");
//記録するシートを指定
var saveSheet = ssFile.getSheetByName("履歴");
//定期的に実行させる関数
function MainFrame() {
//「取得シート」の4行目1列目から、1行分3列分のセル(つまり4行目の3セル分を取得)
var array = baseSheet.getRange(4,1,1,3).getValues()[0];
//今の日時を取得して指定したフォーマットに変換
var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm');
array.unshift(date);
//最終行に配列データを追加で記録する
saveSheet.appendRow(array);
}
4. 정기적으로 기록
「 「GAS(Google Apps Script)로 HelloWorld 해 보았다(① 배치 프로그램편)」의 5장 」로 쓴 것 같은 느낌으로, 트리거로 「MainFrame」함수를 1시간에 1회 동작하도록(듯이) 설정합니다.
이력이 모이면 이런 느낌이 듭니다.
※↑의 그래프는 Google 스프레드시트의 기능으로 표시시키고 있을 뿐입니다.
5. 그런데 한 곳 원하는대로 가지 않는 점이 (※ 나중에 추가했습니다)
운용 처음부터 잠시 후에 알게 된 것입니다만, 「IMPORTXML」함수는, 2시간에 1회 밖에 갱신되지 않는 모양Σ(゚д゚lll)갸
어떻게 할까라고 생각한 거구,↓와 같은 코드로, 매회, 「IMPORTXML」함수를 삭제하고 나서, 다시 「IMPORTXML」함수를 기입하는 것으로, 그 때에 새롭게 취득해 주는 것을 알았습니다. 우선, 이것으로 좋은 드디어.
// 強制的に更新させるための処理
baseSheet.deleteRows(4,1);
baseSheet.getRange(4,1).setValue("=IMPORTXML(A1,\"//span[@class='fl bl']/text()\")");
baseSheet.getRange(4,2).setValue("=IMPORTXML(A1,\"//span[@class='fl og']/text()\")");
baseSheet.getRange(4,3).setValue("=IMPORTXML(A1,\"//span[@class='fl gr']/text()\")");
6. 요약
알 수 있듯이, 이런 짧은 프로그램을 쓰는 것만으로 편리한 도구가 되어 버리는 것입니다. GAS는 매우 편리합니다! !
실은, 개인적으로 Am〇zon 기프트권의 가격이 언제쯤이 저렴해지기 쉬운지를 분석하기 위해, 이력을 보고 싶었지만, 없었기 때문에, 만들어 버렸다고 하는 점입니다. .
Reference
이 문제에 관하여(GAS(Google Apps Script)에서 정기적으로 값을 기록하는 프로그램을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jun_higuche/items/76ecaca473addedc65a8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
・스프레드시트의 「A1」셀에 대상의 WEB 페이지의 URL을 기재
・4행째 이후에, 그 WEB페이지 중에서 특정의 값이 셀상에 쓰여지도록 한다.
-「=IMPORTXML(URL의 셀을 지정, XPath)」로 취득
3. GAS에서 Google 스프레드시트를 읽고 다른 시트에 기록
・Google 스프레드시트에는, 기록용의 별도 시트 「이력」을 만들어 두는 것
· Google 스프레드 시트 URL에서 ID 부분을 기록하는 것
또한 ID 부분은 Google 스프레드 시트 URL의 ↓ 부분입니다.
https://docs.google.com/spreadsheets/d/[ID 부분]/edit#gid=337972102
code.gs//取得するスプレッドシートを指定。スプレッドシートのURLのID部分を指定する。
var ssFile = SpreadsheetApp.openById("**GoogleスプレッドシートのIDを指定**");
//値を取得する対象のシートを指定
var baseSheet = ssFile.getSheetByName("取得シート");
//記録するシートを指定
var saveSheet = ssFile.getSheetByName("履歴");
//定期的に実行させる関数
function MainFrame() {
//「取得シート」の4行目1列目から、1行分3列分のセル(つまり4行目の3セル分を取得)
var array = baseSheet.getRange(4,1,1,3).getValues()[0];
//今の日時を取得して指定したフォーマットに変換
var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm');
array.unshift(date);
//最終行に配列データを追加で記録する
saveSheet.appendRow(array);
}
4. 정기적으로 기록
「 「GAS(Google Apps Script)로 HelloWorld 해 보았다(① 배치 프로그램편)」의 5장 」로 쓴 것 같은 느낌으로, 트리거로 「MainFrame」함수를 1시간에 1회 동작하도록(듯이) 설정합니다.
이력이 모이면 이런 느낌이 듭니다.
※↑의 그래프는 Google 스프레드시트의 기능으로 표시시키고 있을 뿐입니다.
5. 그런데 한 곳 원하는대로 가지 않는 점이 (※ 나중에 추가했습니다)
운용 처음부터 잠시 후에 알게 된 것입니다만, 「IMPORTXML」함수는, 2시간에 1회 밖에 갱신되지 않는 모양Σ(゚д゚lll)갸
어떻게 할까라고 생각한 거구,↓와 같은 코드로, 매회, 「IMPORTXML」함수를 삭제하고 나서, 다시 「IMPORTXML」함수를 기입하는 것으로, 그 때에 새롭게 취득해 주는 것을 알았습니다. 우선, 이것으로 좋은 드디어.
// 強制的に更新させるための処理
baseSheet.deleteRows(4,1);
baseSheet.getRange(4,1).setValue("=IMPORTXML(A1,\"//span[@class='fl bl']/text()\")");
baseSheet.getRange(4,2).setValue("=IMPORTXML(A1,\"//span[@class='fl og']/text()\")");
baseSheet.getRange(4,3).setValue("=IMPORTXML(A1,\"//span[@class='fl gr']/text()\")");
6. 요약
알 수 있듯이, 이런 짧은 프로그램을 쓰는 것만으로 편리한 도구가 되어 버리는 것입니다. GAS는 매우 편리합니다! !
실은, 개인적으로 Am〇zon 기프트권의 가격이 언제쯤이 저렴해지기 쉬운지를 분석하기 위해, 이력을 보고 싶었지만, 없었기 때문에, 만들어 버렸다고 하는 점입니다. .
Reference
이 문제에 관하여(GAS(Google Apps Script)에서 정기적으로 값을 기록하는 프로그램을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jun_higuche/items/76ecaca473addedc65a8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//取得するスプレッドシートを指定。スプレッドシートのURLのID部分を指定する。
var ssFile = SpreadsheetApp.openById("**GoogleスプレッドシートのIDを指定**");
//値を取得する対象のシートを指定
var baseSheet = ssFile.getSheetByName("取得シート");
//記録するシートを指定
var saveSheet = ssFile.getSheetByName("履歴");
//定期的に実行させる関数
function MainFrame() {
//「取得シート」の4行目1列目から、1行分3列分のセル(つまり4行目の3セル分を取得)
var array = baseSheet.getRange(4,1,1,3).getValues()[0];
//今の日時を取得して指定したフォーマットに変換
var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm');
array.unshift(date);
//最終行に配列データを追加で記録する
saveSheet.appendRow(array);
}
「 「GAS(Google Apps Script)로 HelloWorld 해 보았다(① 배치 프로그램편)」의 5장 」로 쓴 것 같은 느낌으로, 트리거로 「MainFrame」함수를 1시간에 1회 동작하도록(듯이) 설정합니다.
이력이 모이면 이런 느낌이 듭니다.
※↑의 그래프는 Google 스프레드시트의 기능으로 표시시키고 있을 뿐입니다.
5. 그런데 한 곳 원하는대로 가지 않는 점이 (※ 나중에 추가했습니다)
운용 처음부터 잠시 후에 알게 된 것입니다만, 「IMPORTXML」함수는, 2시간에 1회 밖에 갱신되지 않는 모양Σ(゚д゚lll)갸
어떻게 할까라고 생각한 거구,↓와 같은 코드로, 매회, 「IMPORTXML」함수를 삭제하고 나서, 다시 「IMPORTXML」함수를 기입하는 것으로, 그 때에 새롭게 취득해 주는 것을 알았습니다. 우선, 이것으로 좋은 드디어.
// 強制的に更新させるための処理
baseSheet.deleteRows(4,1);
baseSheet.getRange(4,1).setValue("=IMPORTXML(A1,\"//span[@class='fl bl']/text()\")");
baseSheet.getRange(4,2).setValue("=IMPORTXML(A1,\"//span[@class='fl og']/text()\")");
baseSheet.getRange(4,3).setValue("=IMPORTXML(A1,\"//span[@class='fl gr']/text()\")");
6. 요약
알 수 있듯이, 이런 짧은 프로그램을 쓰는 것만으로 편리한 도구가 되어 버리는 것입니다. GAS는 매우 편리합니다! !
실은, 개인적으로 Am〇zon 기프트권의 가격이 언제쯤이 저렴해지기 쉬운지를 분석하기 위해, 이력을 보고 싶었지만, 없었기 때문에, 만들어 버렸다고 하는 점입니다. .
Reference
이 문제에 관하여(GAS(Google Apps Script)에서 정기적으로 값을 기록하는 프로그램을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jun_higuche/items/76ecaca473addedc65a8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 強制的に更新させるための処理
baseSheet.deleteRows(4,1);
baseSheet.getRange(4,1).setValue("=IMPORTXML(A1,\"//span[@class='fl bl']/text()\")");
baseSheet.getRange(4,2).setValue("=IMPORTXML(A1,\"//span[@class='fl og']/text()\")");
baseSheet.getRange(4,3).setValue("=IMPORTXML(A1,\"//span[@class='fl gr']/text()\")");
알 수 있듯이, 이런 짧은 프로그램을 쓰는 것만으로 편리한 도구가 되어 버리는 것입니다. GAS는 매우 편리합니다! !
실은, 개인적으로 Am〇zon 기프트권의 가격이 언제쯤이 저렴해지기 쉬운지를 분석하기 위해, 이력을 보고 싶었지만, 없었기 때문에, 만들어 버렸다고 하는 점입니다. .
Reference
이 문제에 관하여(GAS(Google Apps Script)에서 정기적으로 값을 기록하는 프로그램을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jun_higuche/items/76ecaca473addedc65a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)