doGet Parameters in Apps Script

이미지
Apps Script로 Web App을 만들 때 doGet함수의 매개 변수 e는 event object입니다.


Web Apps

https://developers.google.com/apps-script/guides/web


Request Parameters

e.parameter :
An object of key/value pairs that correspond to the request parameters. Only the first value is returned for parameters that have multiple values.


Query string https://en.wikipedia.org/wiki/Query_string

Pre-order copy 앱의 doGet 함수에 src parameter를 추가했습니다.
이것은 사용자가 앱의 Source 입력 상자에 문자열을 입력하고 Copy 버튼을 클릭하는 것과 같습니다.
src Parameter 기능을 확인하기 위해서 파일을 복사해 보겠습니다.


Google 드라이브에 있는 이 파일의 URL은 다음과 같습니다.
https://drive.google.com/file/d/0B_MA3GXgQ1ulX2h3aF9YSnNSUzQ/view


Pre-order copy 앱 실행 URL은 다음과 같습니다.
https://script.google.com/macros/s/AKfycbzIf1xfQ7HH1SSQdR_LCFTtR-YrajOrv1RysWDzu8eUyKdumQE/exec


Pre-order copy 앱 실행 URL 뒤에 ?src=를 적고 EOJJI Why and How logo.png 파일 URL을 덧 붙입니다.
https://script.google.com/macros/s/AKfycbzIf1xfQ7HH1SSQdR_LCFTtR-YrajOrv1RysWDzu8eUyKdumQE/exec?src=https://drive.google.com/file/d/0B_MA3GXgQ1ulX2h3aF9YSnNSUzQ/view


이렇게 만든 문자열을 …

Create web apps for Android devices

이미지
Android 기기용 웹 앱 만들기 Apps Script로 만든 웹 앱을 Android 기기에서 사용할 수 있도록 Google Play에 게시할 수 있습니다.













Copy Google drive folder Apphttps://copy.gfolder.net/





Create web apps for Android devices

https://support.google.com/a/answer/9187142

You can use the Google Admin console to publish web apps to managed Google Play. A web app is an Android app that you create using a website address (URL), icon image, and title. When a user opens a web app on their device, the app’s URL opens in Chrome Browser. Web apps are only available to users in your organization and can’t be made public. You distribute them to your users just like other Android apps.




Create and manage web apps through the Admin consolehttps://gsuiteupdates.googleblog.com/2018/12/create-manage-web-apps-in-g-suite.html




Deploy Google Apps Script web app as an Android application https://www.kutil.org/2019/01/deploy-google-apps-script-web-app-as.html



Chrome Custom Tabshttps://developer.chrome.com/multidevice/android/customtabs




Chrome Custom Tabs - E…

Files in Google Drive

Advanced Drive Service in Apps Script에 이어서 Files and folders overview를 보면 파일 속성 중에 ID가 있습니다.

File attributes
File ID

A unique opaque ID for each file. File IDs are stable throughout the life of the file, even if the file name changes.
Files in Drive cannot be directly addressed by their path. Search expressions are used to locate files by name, type, content, parent container, owner, or other metadata.

제가 만든 복사 앱은 파일이나 폴더 URL을 입력 받아서 복사본을 만듭니다.
참고: G 폴더 복사 앱 설명서
파일을 복사하기 위해서 drive.files.copy를 사용합니다.
이때 Parameter에 file Id를 넣어줘야 합니다.

Files: copy를 참고하세요.

따라서 파일이나 폴더 URL에서 파일 ID를 추출해야합니다.

예전에 stackoverflow에서 검색해서 코드에 적용했는데 조금 바뀌었네요.


Easiest way to get file ID from URL on Google Apps Script

https://stackoverflow.com/questions/16840038/easiest-way-to-get-file-id-from-url-on-google-apps-script/16840612


function getIdFromUrl(url) {return url.match(/[-\w]{25,}/); }

마지막에 있는 ID를 구하기 위해서 $를 추가했네요.

/[-\w]{25,}$/
$를 추가하면 파일 ID뒤에 따라오는(/edit) 것이 있을 때 안됩니다.

그리고 구글이 팀 드라이브( 공유 드라이브 )를 지원하면서 팀 드라이브 ID의 문자열 길이가 25…

Advanced Drive Service in Apps Script.

Writes Apps Script errors in this spreadsheet에 이어서

Google Apps Script로 Web App을 만들면서 try ... catch를 사용했습니다.

오류가 나면 Error 객체를 반환하는데 이때까지 name과 message만 사용해서 오류를 처리했습니다.

message에 있는 문자열이 뭔가에 따라서 처리했는데 하면서도 이건 아니다 생각했었죠.

Google Apps Script에서 Google Drive API를 사용할 수 있도록 Advanced Drive Service를 제공합니다.


다음은 Google Drive API에서 제공하는 오류입니다.

Resolve errors

https://developers.google.com/drive/api/v2/handle-errors

{  "error": {    "errors": [      {        "domain": "global",        "reason": "badRequest",        "message": "Bad Request"      }    ],    "code": 400,    "message": "Bad Request"  }}
{"error":{"errors":[{"domain":"global","reason":"badRequest","message":"Bad Request"}],"code":400,"message":"Bad Request"}} {"error":{"errors":[

Writes Apps Script errors in this spreadsheet.

이미지
저는 Apps Script로 앱을 만듭니다.

https://www.eojji.com/app


Google Drive REST API를 사용하는데 다양한 오류가 발생합니다.

다른 분들과 공유하기 위해서 스프레드시트에 기록 중입니다.

https://docs.google.com/spreadsheets/d/1p-saNPVWm1ZTBtryYkxY8rL0wk_pQClM5xThogaHtBs/edit?usp=sharing




이 시트에 기록할 내용이 있으면 보내 주세요.
개발에 반영하겠습니다.

https://hi.eojji.com/


만약 파일 복사 API 호출에서 발생한 오류가 일시적이면 지수적 감속으로 다시 시도합니다.

  if (resp.name == 'HttpResponseException' ||
      resp.message.indexOf('Internal Error') >= 0 ||
      resp.message.indexOf('Backend Error') >= 0 ||
      resp.message.indexOf('Transient failure') >= 0 ) {

      copiedState.check = '-2'; // 지수적 감속


참고:

Deduper Resolve Errors, Exponential backoff
https://eojji.blogspot.com/2019/06/deduper-resolve-errors-exponential.html



Resolve errors - Google Drive API
https://developers.google.com/drive/api/v2/handle-errors



Troubleshooting
https://developers.google.com/apps-script/guides/support/troubleshooting




Stackdriver Error Reporting
Google Apps Script에서 설정
https://clou…

Copy to shared drives app

이미지
Copy to shared drives app manual
Google 드라이브 Folder 복사 앱 설명서를 수정했습니다.

https://docs.google.com/document/d/1rM01Sp_X6oCfTyTDyR8drUkucErI7iVezIM2FiR-B6U/edit?usp=sharing



Web page
https://copy.gfolder.net/



앱 실행 URL
bit.ly/GFolder



팀 드라이브와 공유 드라이브가 공존하고 있습니다.

Team Drives is being renamed to shared drives
https://gsuiteupdates.googleblog.com/2019/04/shared-drives.html




앱에 추가된 기능이 있습니다.


모든 폴더에서 분리된 파일을 찾을 수 있습니다.
https://cafe.naver.com/eojji/547
https://cafe.naver.com/eojji/548



파일 업로드
https://blog.naver.com/gsuite-reseller/221554030898